プロパティリストのキー LSMinimumSystemVersion
プロパティリストのキー UIApplicationSupportsTabbedSceneCollection
Mac CatalystでビルドしたMacアプリは、UIUserInterfaceIdiom.pad
またはUIUserInterfaceIdiom.mac
のユーザーインターフェイスイディオムで実行できます。アプリを実行するイディオムを選択するには、XcodeプロジェクトでMac Catalystをオンにした後、以下のオプションから選択します。
UIUserInterfaceIdiom.pad
イディオムでアプリを実行します。このオプションを選択すると、iPadアプリを迅速にMac向けに調整できます。
UIUserInterfaceIdiom.mac
イディオムでアプリを実行します。AppKitで利用可能なコントロールと同様の外観および動作にするには、このオプションを選択します。
注意
XcodeプロジェクトでMac Catalystをオンにする方法については、「iPadアプリのMacバージョンの作成」を参照してください。
XcodeでMac Catalystをオンにすると、デフォルトで「Scale Interface to Match iPad(iPadに合わせてインターフェイスのスケールを調整)」が選択されます。このオプションを利用すれば、シンプルな方法でiPadアプリをMac向けに提供できます。MacアプリはUIUserInterfaceIdiom.pad
イディオムで実行されます。このイディオムはmacOSに対し、iPadと同様の外観と表示メトリクスを保持したまま、Macのディスプレイ環境に合わせてアプリのユーザーインターフェイスのスケールを調整するよう指示します。
アプリをテストして、AppKitのコントロールのような外観と動作、およびよりシャープなテキストの表示がアプリのユーザー体験を向上させていることを確認できる場合は、「Optimize Interface for Mac(Mac用にインターフェイスを最適化)」を選択してUIUserInterfaceIdiom.mac
に変更します。ただし、このオプションを選択する際、アプリに追加の変更を加える必要がある場合があります。
「Optimize Interface for Mac(Mac用にインターフェイスを最適化)」を選択することで、MacアプリがUIUserInterfaceIdiom.mac
ユーザーインターフェイスイディオムで実行され、アプリのインターフェイスが変わります。一部のコントロールはサイズと外観が変わり、AppKitのコントロールと同じ感覚で操作できるようになります。たとえば、UIButton
はNSButton
と同じ表示になります。
ユーザーインターフェイスイディオムがUIUserInterfaceIdiom.mac
の場合はシステムによってコントロールのサイズが適切に設定されるので、システムがMacのサイズに合うようにアプリのインターフェイスのサイズをさらに調整する必要はありません。スクリーン座標は、AppKitベースのアプリのものと同じサイズです。ただし、アプリにハードコーディングされたサイズが含まれている場合や、iPad向けにサイズ指定された画像を使っている場合は、アプリをアップデートしてサイズを調整する必要がある可能性があります。また、自動レイアウトの制約も調整しなければならないことがあります。
一部のコントロールは、さらにMacとの外観の整合性を高めるための追加設定を提供しています。たとえば、イディオムがUIUserInterfaceIdiom.mac
の場合、UISwitch
をチェックボックスとして表示することができます。そのためには、preferredStyle
をUISwitch.Style.checkbox
に設定し、title
をチェックボックスのテキストに設定します。
UIPageControl
、UIRefreshControl
、およびUIStepper
は、Macイディオムで実行されているアプリでは利用できません。ビューでこれらのコントロールを表示しようとすると、例外が発生します。ユーザーインターフェイスイディオムがUIUserInterfaceIdiom.mac
の場合は、これらのコントロールを同様の機能に置き換えます。たとえば、UIRefreshControl
は「Refresh」メニュー項目に置き換えます。そのためには、タイトルが「Refresh」のUIKeyCommand
オブジェクトとキーボードショートカット「Command + R」を作成し、このコマンドをアプリのメニューシステムに追加します。詳しくは、「メニューバーおよびユーザーインターフェイスへのメニューとショートカットの追加」を参照してください。
アプリがMacイディオムで実行されているかどうか判断するには、userInterfaceIdiom
プロパティの値をUIUserInterfaceIdiom.mac
と比較します。比較の結果がtrue
なら、異なる子ビューを表示するなど、アプリの動作をMac向けに調整できます。
Macイディオムを採用する場合、UIButton
やUISlider
などの一部コントロールは、AppKitで同じ機能を持つコントロールと同じように表示されます。しかし、アプリでMacイディオムを活用しながら、iPadのコントロールの外観と動作は保持したい場合があるかもしれません。例として、iPadアプリでカスタムのサムネール画像を使ってスライダを表示する場合を考えます。Mac CatalystでビルドしたMacバージョンのアプリは、ユーザーインターフェイスイディオムがUIUserInterfaceIdiom.mac
の場合、デフォルトで標準のmacOSスライダを表示します。
iPadバージョンとMacバージョンの両方のアプリでスライダの外観を統一したい場合は、スライダのpreferredBehavioralStyle
をUIBehavioralStyle.pad
に設定します。この動作スタイル設定を使用すると、アプリがMacイディオムを使用していても、スライダはユーザーインターフェイスイディオムがUIUserInterfaceIdiom.pad
であるかのように動作します。
ただし、Macイディオムを使用しているアプリのインターフェイスサイズはmacOSによって調整されないため、優先される動作スタイルがUIBehavioralStyle.pad
であっても、サイズの違いに適応させるため、アプリをアップデートする必要がある場合があります。たとえば、カスタムのサムネール画像を使ってスライダを表示する場合、Macアプリでは、iPadアプリで使用されるスライダとは異なるサイズのスライダ画像が必要になることがあります。
UIButton
およびUISlider
の一部のプロパティおよびメソッドは、動作スタイルがUIBehavioralStyle.mac
の場合にMacイディオムでサポートされず、これらを呼び出すと例外が発生します。たとえば、コントロール要素の状態がnormal
以外のボタンにタイトルや画像を設定することや、スライダのサムネール画像、最小/最大トラック画像、色遣い、値画像の設定がこれに該当します。ただし、コントロールの動作スタイルがUIBehavioralStyle.pad
であれば、Macイディオムでこれらのプロパティおよびメソッドを使用できます。
MacアプリがUIUserInterfaceIdiom.pad
イディオムで実行されている場合でも、Macアプリの外観や動作の変更が必要になることがあります。targetEnvironment()
コンパイル条件を使って、ターゲット環境に応じて異なるコードパスを選択します。
たとえば、iPadアプリでは削除ボタンの次にアイテムの削除を確認するポップオーバーを表示し、Macアプリではこの確認ステップをアラートとして表示したい場合は、targetEnvironment()
条件を追加して、アラートコントローラの優先スタイルを決定します。
プロパティリストのキー LSMinimumSystemVersion
プロパティリストのキー UIApplicationSupportsTabbedSceneCollection