tvOS 10 フレームワークのその他の変更点
tvOS の主要な変更に加えて、Apple は tvOS 10 のいくつかの既存のフレームワークを変更および改善しました。
AVFoundation フレームワークの追加
AVFoundation フレームワークには、次の機能強化が含まれています。
- tvOS 10 では、アプリはコンテンツ タイプに基づいて異なる AVPlayerItem 動作を実装しなくなりました。 単に
Rate
プロパティを設定するだけで、AVFoundation は、止まることなく再生に十分なコンテンツが使用できるタイミングを判別します。 - 新しい
AVPlayerLooper
クラスを使用すると、再生中に特定のメディアを簡単にループできます。
AVKit フレームワークの機能強化
AVKit フレームワークには、次の機能強化が含まれています。
- アプリは AVPlayerViewController のスキップ動作を制御できるようになったため、スキップ ジェスチャがプレイリスト内の次の項目に移動したり、現在の項目内で進んだりする可能性があります。
Core Data の機能強化
tvOS 10 には、Core Data フレームワークに対する次の機能強化が含まれています。
- ルートの NSManagedObjectContext オブジェクトは、シリアル化することなく、同時実行のエラーとフェッチをサポートします。
- NSPersistentStoreCoordinator クラスは、SQLite データ ストアのプールを保持します。
- WAL ジャーナル モードの SQLite データ ストアを含む NSManagedObjectContext オブジェクトは、Managed Object Contexts (MOC) を将来のトランザクションのフェッチとエラーのために特定のデータベース バージョンにピン留めできる、新しいクエリ生成機能をサポートします。
- 上位レベル
NSPersistenceContainer
を使用して、NSPersistentStoreCoordinator
、NSManagedObjectModel やその他の Core Data 構成リソースを参照します。 - フェッチの実行とサブクラスの作成を容易にするために、いくつかの新しい便利なメソッドが
NSManagedObject
に追加されました。
詳細については、Apple のCore Data フレームワークのリファレンスを参照してください。
Core Graphics の機能強化
tvOS 10 には、Core Graphics フレームワークに対する次の機能強化が含まれています。
- 新しい CGColorConverterRef クラスを使用して、一連の色変換を実行できます。
Core Image の機能強化
tvOS 10 では、Core Image フレームワークに対して次の機能強化が行われています。
- CIFilter クラスの
ImageWithExtent
メソッドを使用して、フィルター操作にカスタム処理を挿入できます。 Core Image は、出力または表示用のイメージを処理するときに、フィルター間で指定されたコールバックを呼び出します。 - 処理の前後に色空間のインとアウトを切り替えることで、Core Image コンテキストの作業中の色空間の外側にある色空間で画像を処理できるようになりました。
UIImageView
オブジェクトのUIImage
レンダリング (Core Image イメージ ストアによってサポートされている場合) のいくつかのレンダリング パフォーマンスが強化されました。- 広色域にタグ付けされた
UIImage
オブジェクトは、広色域をサポートする iOS デバイス上のUIImageView
オブジェクトで広色域の色としてレンダリングされます。 - Core Image カーネル コードで、特定のピクセル出力形式を要求できるようになりました。
さらに、次の新しい Core Image フィルターが追加されています。
CINinePartTiled
CINinePartStretched
CIHueSaturationValueGradient
CIEdgePreserveUpsampleFilter
CIClamp
Foundation の機能強化
tvOS 10 の Foundation フレームワークに対して、次の機能強化が行われました。
- 新しい NSDateInterval クラスを使用して、期間などの日付と時間間隔の計算を行い、間隔を比較し、間隔の交差をテストします。
- ローカル情報と使用可能な表示形式を取得するために、NSLocal クラスにいくつかの新しいプロパティを追加しました。
- 新しい NSMeasurement クラスを使用して、異なる測定単位 (UOM) 間での変換や、異なる UOM 内の値に対する計算を行います。
- 新しい NSMeasurementFormatter クラスを使用して、エンド ユーザーに表示するためのローカライズされた測定値を書式設定します。
- 特定の UOM を表すために、新しい NSUnit クラスと NSDimension クラスを使用します。
GameKit の機能強化
tvOS 10 の GameKit フレームワークに対して、次の機能強化が行われました。
- 新しい iCloud 専用アカウントの種類が GKCloudPlayer クラスによって実装されました。
- 新しい GKGameSession クラスは、Game Center で永続的なデータ ストレージを管理するための一般化されたソリューションを提供します。 プレイヤーの一覧は
GKGameSession
が保持し、参加者の日付の格納、取得、またはプレイヤー間で交換する方法とタイミングはアプリによって実装されます。 多くの場合、Game Session は、既存のターンベースのマッチ、リアルタイムのマッチ、永続的なゲームの保存メソッドに置き換えることができます。
GameplayKit の機能強化
tvOS 10 の GameplayKit フレームワークに対して、次の機能強化が行われました。
- 手続き型のノイズ生成が追加され、自然に見えるテクスチャのリアリズムを強化し、カメラの動きにリアリズムを追加し、豊富なゲーム世界を生成するために使用できます。
- Spatial Partitioning を使用して、効率的な検索のためにゲーム世界のデータをパーティション分割します。
- 可能な移動計算を網羅するために、新しいモンテカルロ戦略 (GKMonteCarloStrategist) が追加されました。
- ゲーム構築 AI を強化するために、新しいデシジョン ツリー API (GKDecisionTree と GKDecisionNode) が追加されました。
- 新しい GKAgent3D クラスと GKGraphNode3D クラスを使用して、既存のエージェントとパス検索の動作に 3D サポートを追加しました。
- 新しい GKMeshGraph クラスを使用して、高パフォーマンスで自然な見た目のパスを提供します。
- 新しい GKScene クラスと GKSKNodeComponent クラスを使用すると、GameplayKit と SpriteKit の組み合わせがこれまで以上に簡単になります。
Metal の機能強化
tvOS 10 の Metal フレームワークに対して、次の機能強化が行われました。
- 3D アプリとゲームで Tessellation を使用して、GPU 経由で複雑なシーンとジオメトリを効率的にレンダリングできるようになりました。
- 関数の特殊化を使用して、シーンのマテリアルとライトの組み合わせ関数の高度に最適化されたコレクションを作成します。
- リソース ヒープとメモリレス レンダー ターゲットを使用して、Metal ベースのアプリのパフォーマンスを最適化するために、リソース割り当てをきめ細かく制御します。
詳細については、Apple の Metal プログラミング ガイドに関するページを参照してください。
Metal Performance Shaders の機能強化
tvOS 10 の Metal Performance Shaders フレームワークに対して、次の機能強化が行われました。
- 多くの新しいカーネルが Metal Performance Shaders フレームワークに追加され、色空間変換やニューラル ネットワーク操作などの高度に最適化されたデータ並列計算をアプリで利用できるようになりました。
ModelIO の機能強化
tvOS 10 の ModelIO フレームワークに対して、次の機能強化が行われました。
- USD ファイル形式がサポートされるようになりました。
- 新しい
MDLMaterialPropertyGraph
クラスを使用して、モデルのランタイムの変更を簡単にサポートします。 - 符号付きディスタンス フィールドのサポートが、MDLVoxelArray クラスに追加されました。
- 新しい
MDLLightProbeIrradianceDataSource
クラスを使用して、Light Probe の配置を支援します。
SceneKit の機能強化
tvOS 10 の SceneKit フレームワークに対して、次の機能強化が行われました。
- SceneKit に、よりシンプルなアセット作成で、より現実的な結果を得るための新しい Physically Based Rendering (PBR) システムが含まれるようになりました。
- 新しい SCNLightingModelPhysicallyBased シェーディング モデルを使用して、3 つの基本的なプロパティ (
Diffuse
、Metalness
、Roughness
) のみを必要としながら、幅広い現実的なシェーディング効果を作成します。 - PBR シェーディングは環境ベースの照明に最適であるため、
LightingEnvironment
プロパティを使用して、シーン全体にイメージ ベースの照明を割り当てます。 IESProfileURL
プロパティを使用して、強度 (ルーメン) や色温度 (ケルビン度) などの実際の値に基づいて照明を定義する現実世界のライト フィクスチャをインポートします。- SCNCamera クラスは、HDR の機能と効果を使用して、より優れたリアリズムを提供できます。 アダプティブ露出を使用して自動効果を作成するか、ビネット、カラー フリンジ、カラー グレーディングを使用して、フィルム効果をゲームに追加します。
- PBR と HDR の両方のカメラ機能は、従来のレンダリング手法よりも優れた結果を提供します。その結果、SceneKit は、すべてのカラー計算がリニア色空間で実行されるようになりました (広色域デバイス ディスプレイで P3 色域を使用)。
- SceneKit では、カラー プロファイル情報を読み取ることで、色がすべての色と一致するようになりました。
- SceneKit は、すべてのシェーダーの種類に対してリニア RGB 色空間内の色要素の値を解釈します。
- SceneKit はテクスチャ イメージのカラー プロファイル情報を読み取って調整するため、すべてのイメージに Asset Catalog 使用して、この情報が確実に提供されるようにします。
- リニア色空間のレンダリングと広色域の両方を無効にするには、アプリの
Info.plist
でSCNDisableLinearSpaceRendering
キーとSCNDisableWideGamut
キーを指定します。 - 新しい SCNGeometryPrimitiveTypePolygon クラスを使用してジオメトリを指定するために、任意の多角形プリミティブ (ファイルから読み込まれるか、プログラムによって生成されます) を構築します。
SpriteKit の機能強化
tvOS 10 の SpriteKit フレームワークに対して、次の機能強化が行われました。
- タイルマップは、2D、2.5D、および
SKTileMapMode
、SKTileGroup
、SKTileGroupRule
、SKTileSet
クラスを使用したサイド スクロール ゲームの正方形、六角形、アイソメトリックのタイル図形をサポートするようになりました。 - 新しい
SKWarpGeometry
クラスを使用して、SKSpriteNode または SKEffectNode レンダリングを伸縮させたり、歪めたりします。 新しい SKAction クラスを使用して、ワープ効果の間の画面切り替え効果をアニメーション化できます。 - カスタム シェーダーは、属性値 (
SKAttributeValue
) 指定することでシェーダーを使用する各ノードによって個別に構成できる属性 (SKAttribute
) を提供できます。 - SKView クラスには、シーンをレンダリングするタイミングと方法をきめ細かく制御するための新しいメソッドがいくつか用意されています。
UIKit の機能強化
tvOS 10 の UIKit フレームワークに対して、次の機能強化が行われました。
- フォーカス API が強化され、
UIViews
に加えて非ビュー項目のフォーカスもサポートされるようになりました。 フォーカスをサポートする項目は、IUIFocusItem
インターフェイスを実装する必要があります。 - 新しい
UIGraphicsRender
クラスは、UIKit レンダリングまたは Core Graphics からビットマップまたは PDF を作成するオブジェクト指向のメソッドを提供し、非推奨のUIGraphicsBeginImageContext
メソッドに置き換わります。 - 現在アクティブなユーザー インターフェイス テーマ (ダークまたはライト) を決定するための
UIUserInterfaceStyle
クラスが追加されました。 - 完全にインタラクティブなオブジェクト ベースの割り込み可能なアニメーションのサポートが新たに追加され、ジェスチャにリンクできます。 詳細については、Apple の UIViewAnimating プロトコル リファレンス、UIViewPropertyAnimator クラス リファレンス、UITimingCurveProvider プロトコル リファレンス、UICubicTimingParameters クラス リファレンス、UISpringTimingParameter クラス リファレンスを参照してください。
- 新しい
UIPreviewInteraction
とUIPreviewInteractionDelegate
を使用すると、アプリがクイック表示とポップ操作のためのカスタム インターフェイスを提供できます。 - 新しい
UIAccessibilityCustomRotor
クラスを使用すると、アプリは、Voice Over などの支援テクノロジにカスタムのコンテキスト固有の機能を提供できます。 UIAccessibilityIsAssistiveTouchRunning
とUIAccessibilityAssistiveTouchStatusDidChangeNotification
シンボルを使用して、AssistiveTouch が有効になっているかどうかを判断します。UIAccessibilityHearingDevicePairedEar
とUIAccessibilityHearingDevicePairedEarDidChangeNotification
シンボルを使用して、ペアリングされた MFi 聴覚補助具の状態を取得します。- 新しい UIPasteboard API は、新しいオプション (有効期間の制限など) を提供し、共通のクラス型の互換性のあるコンテンツ タイプを自動的に宣言します。
- ラベルで動的な型をサポートするには、テキスト フィールドとテキスト ボックスで
UIFont
クラスの新しいPreferredFontForTextStyle
メソッドを使用します。 - デバイスの
UIContentSizeCategory
が変更されるときに、要素がそのフォントを更新する必要があるかどうかを判断するには、UIContentSizeCategoryAdjusting
デリゲートのAdjustsFontForContentSizeCategory
プロパティを使用します。 - アプリは、タブ バー項目 (テキストや背景色など) のバッジの外観を制御できるようになりました。
- すべてのスクロール ビューおよびスクロール ビュー サブクラス (
UICollectionView
など) で Refresh コントロールがサポートされるようになりました。 UIApplication
クラスのOpenURL
メソッドは非同期的に呼び出され、オープン完了後に呼び出される完了ハンドラーがサポートされるようになりました。- CloudKit 共有を開始し、新しい
UICloudSharingController
とUICloudSharingControllerDelegate
クラスを使用してそのプロパティを変更します。 - プリフェッチされたセルを利用して、新しい
UICollectionViewDataSourcePrefetching
デリゲートでUICollectionViews
のスクロール エクスペリエンスを向上させます。