ハイライト
macOS Big Sur では、Mac Catalyst がより多くの iOS フレームワークにリンクし、ハードウェア キーボード、フォーカス、ウィンドウの動作、Big Sur の外観サポートを追加し、Mac 用に最適化とユニバーサル購入を使用して Mac 用の iPad アプリを変更するコストを削減できます。
主要内容
iPad アプリを Mac に導入する最初のステップは、通常、起動して実行することです。 Catalina 時代の Mac Catalyst では、アプリがより大きな画面を使用し、ツールバーやメニューを追加し、macOS の外観を自動的に得ることがすでに可能でした。磨きが続くと本当の問題が発生します。一部の iOS フレームワークはリンクできず、キーボードとフォーカスの動作は十分デスクトップらしくなく、マルチウィンドウのライフサイクルは iPad の直感とまったく同じではありません。
Big Sur アップデートでは、まず互換性に対処します。 Apple は今年、さらに多くの iOS フレームワークを Mac Catalyst に導入し、macOS 自体には存在しないいくつかの iOS フレームワークを macOS SDK に組み込みました。目標は、Mac ターゲット条件のコードを除外する必要性を減らすことです。講演の例は ARKit です。Big Sur をターゲットにする場合、またはシステムを更新する場合、Catalyst アプリは ARKit にリンクし、AR をサポートしていない iOS デバイスと同様に、ランタイム チェックを使用して AR 機能を有効にするかどうかを決定できます。
2 番目の層は入力とウィンドウの動作です。 UIKit の新しいハードウェア キーボード イベント、フォーカス エンジン、selectionFollowsFocus、NSCursor、カラーピッカー、日付ピッカー、メニューボタン、シート、ポップオーバー、および 3 つの列UISplitViewControllerこれらすべてにより、Catalyst アプリは Mac アプリに対するユーザーの期待にさらに近づきます。開発者は依然として UIKit を作成していますが、標準の右クリック メニュー、Mac カラー ピッカー、AppKit インライン日付ピッカー、およびより Mac に似たサイドバーを利用できます。
最後の層は製品の発売とインターフェースの品質です。 Mac 用に最適化すると、デフォルトのズームが 77% から 100% に変更され、テキストとグラフィックがより鮮明になり、コントロールの測定が Mac に近づきます。 SwiftUI のコマンドとツールバーは、Mac のメイン メニューとツールバーに自然に入ることができます。 Universal Purchase は、iOS と Mac の間の購入関係を結合します。新しい Catalyst アプリはデフォルトで追加され、古いプロジェクトや非 Catalyst Mac アプリはドキュメントに従って移行できます。
詳細
1. より多くの iOS フレームワークが Catalyst の構築に直接参加できるようになりました
(01:00) Catalyst の初期の問題点はフレームワークの可用性でした。講演では、これまでARKitに依存していたアプリはmacOSターゲットからフレームワークを削除し、条件付きコンパイルを使用してARKitシンボルを回避する必要があったと指摘した。 Big Sur 以降、Catalyst アプリはこれらのフレームワークにリンクし、ランタイム機能を使用して関数エントリを確認および制御できるようになります。
import ARKit
if ARWorldTrackingConfiguration.isSupported {
showAREntryPoint()
} else {
hideAREntryPoint()
}
キーポイント:
import ARKitスピーチ内の「ARKit連携可能」の変更に対応。 -ARWorldTrackingConfiguration.isSupportedこれは、現在の Mac が AR 機能を有効にできるかどうかを判断するのに適したランタイム機能チェックです。 -showAREntryPoint()そしてhideAREntryPoint()サポートされていないエントリがユーザーに公開されるのを避けるための製品層の切り替えを表します。- この書き方では、実行時に差分が反映され、Mac ターゲット上の条件付き除外コードの大部分が削減されます。
2. キーボード フォーカスと生のキー イベントが UIKit パスに入る
(02:12) ハードウェア キーボード イベントは、レスポンダー チェーンを通じて処理できます。演説点呼の入り口は、pressesBeganそしてpressesEnded。ゲームやキャンバス アプリはこれらを使用して、D-pad、修飾キー、および長押し動作を既存の UIKit コントローラーに追加できます。
(03:01) 同じ段落でフォーカス エンジンについても言及されています。UITableViewそしてUICollectionViewキーボードのフォーカスに合わせて選択を行うことができます。たとえば、サイドバーを矢印キーで移動すると、ユーザーから見えるフォーカスと現在選択されている項目が同期される必要があります。詳細領域では、矢印キーは強調表示された動きとみなされ、Enter またはスペースを押すことで選択をトリガーできます。
final class SidebarViewController: UITableViewController {
override func viewDidLoad() {
super.viewDidLoad()
tableView.selectionFollowsFocus = true
}
override func pressesBegan(_ presses: Set<UIPress>, with event: UIPressesEvent?) {
for press in presses {
switch press.key?.keyCode {
case .keyboardUpArrow:
moveSelection(delta: -1)
case .keyboardDownArrow:
moveSelection(delta: 1)
default:
super.pressesBegan(presses, with: event)
}
}
}
override func pressesEnded(_ presses: Set<UIPress>, with event: UIPressesEvent?) {
stopKeyboardDrivenMovement()
}
private func moveSelection(delta: Int) {}
private func stopKeyboardDrivenMovement() {}
}
キーポイント:
tableView.selectionFollowsFocus = true位置合わせ音声「矢印キーがサイドバーのセル間を移動する」シーン。 -pressesBegan(_:with:)ボタンが押されるとレスポンダー チェーンに入り、連続的な動きを開始するのに適しています。 -pressesEnded(_:with:)ユーザーが方向キーを放した後にインターフェイスが動き続けないように、キーを放したときにアクションを停止します。 -super.pressesBeganシステムが他のキーストロークを処理する機会を確保します。
3. シーンのアクティブ化により、新しいタブと新しいウィンドウを制御できます
(03:26)UIScene.ActivationRequestOptionsのcollectionJoinBehaviorこのプロパティを使用すると、Catalyst アプリはシーンをアクティブ化するときにウィンドウの作成動作を指定できます。このプロパティのタイプは次のとおりですUISceneCollectionJoinBehavior。開発者は、既存のウィンドウ コレクションに新しいシーンを追加して、新しいタブを形成できます。新しいトップレベル ウィンドウの作成を要求することもできます。
let options = UIScene.ActivationRequestOptions()
options.collectionJoinBehavior = .preferred
UIApplication.shared.requestSceneSessionActivation(
nil,
userActivity: userActivity,
options: options,
errorHandler: nil
)
キーポイント:
UIScene.ActivationRequestOptionsスピーチ内のシーン アクティベーション設定オブジェクトに対応します。 -collectionJoinBehavior = .preferredコンテンツをタブで開くのに適した、互換性のあるウィンドウ コレクションの追加を優先することを示します。- トップレベルウィンドウが必要な場合は、動作を次のように変更できます。
.disallowed、シーンに新しいコレクションを作成させます。 - この API は、Mac での「タブまたは新しいウィンドウ」の選択肢を UIKit シーンのライフサイクルに戻します。
(08:54) ライフサイクルも変わりました。 Big Sur では、ウィンドウが最小化されているとき、スペースが表示されていないとき、アプリが非表示になっているときなど、より多くのシナリオでシーンを背景に入れることができます。アプリがフォアグラウンドにウィンドウを持っている限り、またはアプリがメニュー バーを制御している限り、アプリ全体の状態はフォアグラウンドに残ります。ゲームやリアルタイム コンテンツ アプリは、シーン レベルで一時停止するかどうかを決定する必要があります。
4. 延長と購入の関係は iOS に近い
(10:20) 写真編集拡張機能を Mac に導入できます。 Catalyst 拡張機能のライフ サイクルも iOS に近くなります。使用されていないときは一時停止状態になり、必要なときにすぐに再開し、iOS スタイルのメモリ制限とメモリ プレッシャー制御を適用します。 WidgetKit の iPad ウィジェットは、Mac Catalyst にオプトインすることで Mac 上でも実行できます。
(11:15) Universal Purchase は、ユーザーの購入パスを解決します。ユーザーが Universal Purchase アプリを購入すると、すべてのプラットフォームでアクセスできるようになります。新しい Mac Catalyst アプリはデフォルトで Universal Purchase に参加します。終了したい場合は、プロジェクト設定で「iOS バンドル識別子の使用」をキャンセルできます。古い Catalyst アプリ、Catalyst 以外の Mac アプリ、および既存の iOS アプリのマージ パスは、「ユニバーサル購入の提供」ドキュメントに従う必要があります。
キーポイント:
- 写真編集拡張機能と WidgetKit ウィジェットは両方とも、既存の iPad アセットの Mac へのエントリ ポイントです。
- 拡張機能の一時停止/一時停止解除の動作により、開発者が Mac のライフサイクルを個別に処理するというプレッシャーが軽減されます。
- Universal Purchase は、ビジネス モデルを「Mac はまた買う」からクロスプラットフォームの特典に変更します。
- 古いプロジェクトを移行するときは、最初にバンドル識別子、機能、および App Store メタデータの所有権関係を確認してください。
5. Big Sur の外観では、Catalyst インターフェイスのバッチが自動的にカバーされます
(12:10) Big Sur の新しい外観が Catalyst アプリに大規模に導入されます。ツールバーのスタイルを渡すことができますUITitlebarのtoolbarStyleプロパティ設定UITitlebarToolbarStyle、各ウィンドウのタイトルバーに適用されます。区切り識別子を入れることができますtoolbarDefaultItemIdentifiers、ツールバー項目をサイドバー、コンテンツ領域、右領域に割り当てるために使用されます。アクセント カラーはアセット カタログのシンボリック カラーから取得され、アプリ全体のデフォルトの色合いとして使用されます。
if let titlebar = view.window?.windowScene?.titlebar {
titlebar.toolbarStyle = .unified
}
キーポイント:
windowScene.titlebarこれは、Catalyst アプリが Mac タイトルバーにアクセスするための UIKit エントリです。 -toolbarStyle = .unifiedBig Sur の統一ツールバーの外観を調整します。- ツールバーの区切り識別子とアクセントカラーは、UIKit レイアウト全体を書き直す必要はありませんが、開発者は既存のツールバーとリソース ディレクトリを確認する必要があります。
- 講演では、サイドバーのコレクション ビューの自動ドラッグによる並べ替えについても言及されました。リスト レイアウトを使用するアプリは、より Mac に似たサイドバーの動作を直接取得できます。
重要ポイント
-
キーボードファーストの Mac バージョンのデータベースを作成: iPad のリスト/詳細アプリを、矢印キーで操作できる 3 列のサイドバーに変更します。
selectionFollowsFocus, Enter またはスペースを押すと、詳細選択がトリガーされます。 実行する価値がある理由: これはまさにプレゼンテーションのサイドバーとフォーカス エンジンのターゲット シナリオです。 開始方法: まず、メイン ナビゲーションをUISplitViewController3 列構造で、テーブル ビューまたはコレクション ビューへの選択に続いてフォーカスを追加します。 -
描画、ゲーム、またはメディア アプリに生のキーボード コントロールを追加: 矢印キーでオブジェクトを移動し、スペースで再生/一時停止し、修飾キーでドラッグ動作を変更します。 価値がある理由: Mac ユーザーは自然にキーボードとマウスのパスを探します。
pressesBegan、pressesEndedそしてNSCursorUIKit アプリにこれらの入力を処理させます。 開始方法: 最もよく使用されるキーのグループからレスポンダー チェーンへの接続を開始し、マウス領域のカーソル画像を構成します。 -
既存の写真編集機能を Mac 拡張機能に: iPad 上の既存の写真編集拡張機能を Mac でも使用できるようにします。 価値がある理由: Catalyst 拡張機能は、iOS に近いライフサイクルとメモリ プレッシャーの動作を自動的に一時停止します。 開始方法: まず拡張ターゲットとして Mac Catalyst を選択し、次にインストゥルメントとメモリ ストレス テストを使用して大規模な画像処理パスを確認します。
-
有料 iPad ツールの 完全ユニバーサル購入: 古いユーザーが同じアプリの権利を Mac 上で直接取得できるようにします。 実行する価値がある理由: この講演では、Catalyst での Mac リリースの重要な変更として Universal Purchase について明示的に言及しています。 開始方法: プロジェクトで「iOS バンドル識別子を使用する」にチェックを入れ、「Offering Universal Purchase」ドキュメントをクリックして機能と App Store メタデータをマージします。
-
Big Sur の外観監査を行う: ツールバーのスタイル、アクセント カラー、SF シンボル、カラー ピッカー、日付ピッカー、プルダウン メニュー、シート、ポップオーバーをチェックします。 実行する価値がある理由: これらの UI 更新の多くは自動的に有効になりますが、ツールバーのパーティション、ブランドの色、古いカスタム コントロールについては依然として手動での判断が必要です。 開始方法: まず、Big Sur ターゲット システム上で既存の Catalyst アプリを実行し、各ウィンドウのタイトルバー、サイドバー、フォーム コントロール、およびポップアップ レイヤーのチェックリストを作成します。
関連セッション
- Mac Catalyst アプリのインターフェイスを最適化する - Mac 用に最適化、Mac イディオム、1:1 レンダリング、Mac コントロールの外観、Catalyst レイアウトの移行について詳しく説明します。
- macOS の新しい外観を採用 - Big Sur のサイドバー、ツールバー、アクセント カラー、コントロール、SF シンボルの変更、このセッションの UI 部分の Mac 側の背景について説明します。
- iOS ピッカー、メニュー、アクションを使用して構築する — このセッションで説明したカラー ピッカー、日付ピッカー、プルダウン メニュー、UIAction を展開します。
- アプリでハードウェア キーボードをサポートする - ハードウェア キーボード、レスポンダー チェーン、ショートカット キー、生のキー イベントについての詳細な説明。
- Mac Catalyst のアクセシビリティ設計 — Mac Catalyst のキーボード フォーカス、ショートカット、グループ化、テスト フローをアクセシビリティの観点から補足します。
コメント
GitHub Issues · utterances