プロパティリストのキー LSMinimumSystemVersion
プロパティリストのキー UIApplicationSupportsTabbedSceneCollection
iPadアプリのMacバージョンでは、追加の作業を必要とせず、macOSに搭載されている以下のような多くのシステム機能に対応しています。
アプリのデフォルトのメニューバー
トラックパッド、マウス、キーボードによる入力
ウインドウのサイズ変更およびフルスクリーン表示
Macスタイルのスクロールバー
コピー&ペースト
ドラッグ&ドロップ
システムのTouch Barコントロール
また、追加のシステム機能を活用することでアプリ機能をさらに強化することができます。
重要
Mac CatalystでビルドしたMacアプリでは、NSToolbar
やNSTouch
など、Mac Catalystで利用可能となっているAppKit APIのみ使用できます。Mac Catalystは、利用不可となっているAppKit APIへのアクセスには対応していません。
アプリのMacバージョンには、標準のメニューバーが自動的に含まれます。UIMenu
を使うと、メニュー項目を追加したり削除したりしてカスタマイズできます。詳しくは、「メニューバーおよびユーザーインターフェイスへのメニューとショートカットの追加」を参照してください。
Macアプリでは通常、ユーザーが環境設定ウインドウを表示して、アプリごとの設定を管理できます。ユーザーは、アプリメニューの「環境設定」メニュー項目を選択して、このウインドウを表示します。アプリに設定バンドルが含まれている場合、システムによって自動的にアプリの環境設定ウインドウが提供されます。詳しくは「環境設定ウインドウの表示」を参照してください。
Split Viewコントローラを使うiPadアプリは、macOSで実行するとMacスタイルの縦の分割表示になります。ただし、iPadアプリをMac上でより自然に見せるには、デスクトップをぼかしてプライマリビューコントローラの背景に溶け込ませる半透明のエフェクトを適用します。これを行うには、Split Viewコントローラのprimary
をUISplit
に設定します(リスト1を参照)。
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
}
Macユーザーは、テキストフィールドの選択やウインドウの移動といったアプリ操作にポインタを使います。ユーザーがUI要素の上にポインタを動かした時に、その要素の外観が変わる必要があります。たとえば、Webブラウザでは、リンクの上にポインタを置くとリンクがハイライトされます。
ユーザーがアプリのビュー上でポインタを動かした時、これを検出するには、そのビューにUIHover
を追加します。これによってアプリは、ポインタがビューの領域に入った時、領域から出た時、またはビュー上で動いた時にそれを検知できます。
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
}
}
}
プロパティリストのキー LSMinimumSystemVersion
プロパティリストのキー UIApplicationSupportsTabbedSceneCollection