https://developer.apple.com/documentation/uikit/mac_catalyst/optimizing_your_ipad_app_for_mac
"Make your iPad app more like a Mac app by taking advantage of system features in macOS."
macOS에 있는 시스템 기능의 이점을 활용함으로써 아이패드 앱을 더욱 맥 앱과 같은 형태로 만들어줍니다.
아이패드 앱의 맥 버전은 macOS에 있는 많은 시스템 기능들을 지원합니다. 특별한 공을 들이지 않고도 가능합니다. 아래 내용을 포함합니다.
더 많은 시스템 기능의 이점을 활용할 수 있도록 앱을 확장시킬 수도 있습니다.
Important
맥 Catalyst에 의해 빌드된 맥 앱은 맥 Catalyst에서 사용이 가능하다고 표시된Appkit
API(NSToolbar
,NSTouchBar
와 같은)만 사용이 가능합니다. 맥 Catalyst는 사용 불가능한AppKit
API는 지원하지 않습니다.
앱의 맥 버전은 표준 메뉴 바를 동반합니다. UIMenuBuilder
를 사용해 메뉴 아이템을 추가하거나 삭제함으로써 커스텀으로 구현할 수 있습니다. 이에 대한 더 많은 정보는 Adding Menus and Shortcuts to the Menu Bar and User Interface를 살펴보시기 바랍니다.
Adding Menus and Shortcuts to the Menu Bar and User Interface
https://developer.apple.com/documentation/uikit/uicommand/adding_menus_and_shortcuts_to_the_menu_bar_and_user_interface
맥 앱은 preference 윈도우를 표시함으로써 사용자가 앱의 특정 설정을 관리할 수 있도록 해줍니다. 사용자는 메뉴 바에 있는 Preferences 메뉴 아이템에 뒤이어 나오는 앱 메뉴를 선택함으로써 이 윈도우를 볼 수 있습니다. 앱이 세팅 번들을 갖고 있는 경우 시스템은 자동으로 preferences 윈도우를 제공합니다. 이에 대한 더 많은 정보는 Displaying a Preferences Window를 살펴보시기 바랍니다.
https://developer.apple.com/documentation/uikit/mac_catalyst/displaying_a_preferences_window
https://velog.io/@panther222128/Displaying-a-Preferences-Window
스플릿 뷰 컨트롤러를 사용하는 아이패드 앱은 macOS에서 작동할 때 맥 스타일의 수직 스플릿 뷰를 가져옵니다. 맥에서 아이패드 앱이 더 홈처럼 보이길 원한다면, 바탕화면을 흐리게 보일 수 있도록 반투명 효과를 주요 뷰 컨트롤러의 배경으로 적용해야 합니다. 이렇게 하려면 Listing 1에서 보이는 것처럼 스플릿 뷰 컨트롤러의 primaryBackgroundStyle
을 UISplitViewController.BackgroundStyle.sidebar
로 설정하시기 바랍니다.
Listing 1 Add a translucent background to the primary view controller
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
let splitViewController = window!.rootViewController as! UISplitViewController
let navigationController = splitViewController.viewControllers[splitViewController.viewControllers.count-1] as! UINavigationController
navigationController.topViewController!.navigationItem.leftBarButtonItem = splitViewController.displayModeButtonItem
// Add a translucent background to the primary view controller.
splitViewController.primaryBackgroundStyle = .sidebar
splitViewController.delegate = self
return true
}
맥 사용자는 텍스트 필드를 선택하거나 윈도우를 움직이려할 때 포인터에 의존해 앱과 상호작용합니다. 사용자가 UI 요소에 포인터를 움직이면, 몇 가지 요소는 모양이 바뀌어야만 합니다. 예를 들어 웹 브라우저는 링크에 포인터가 올라가는 경우 링크를 강조해야 합니다.
사용자가 앱에 있는 뷰에 포인터를 올리는 것을 감지할 수 있도록 하려면, UIHoverGestureRecognizer
를 해당 뷰에 추가하시기 바랍니다. 이는 포인터가 뷰에 진입하거나 빠져나올 때 혹은 뷰 위에서 이동하는 경우 앱에게 이를 알려주도록 합니다.
Listing 2 Change the button's default color to red as the pointer moves over the button
class ViewController: UIViewController {
@IBOutlet var button: UIButton!
override func viewDidLoad() {
super.viewDidLoad()
let hover = UIHoverGestureRecognizer(target: self, action: #selector(hovering(_:)))
button.addGestureRecognizer(hover)
}
@objc
func hovering(_ recognizer: UIHoverGestureRecognizer) {
switch recognizer.state {
case .began, .changed:
button.titleLabel?.textColor = #colorLiteral(red: 1, green: 0, blue: 0, alpha: 1)
case .ended:
button.titleLabel?.textColor = UIColor.link
default:
break
}
}
}