iOS用プログラミングガイドの表示-公式ドキュメント翻訳(2.1)アーキテクチャの基礎の表示



View Programming Guide

各ビューには、ビューのジオメトリの変更に応じてビューがコンテンツをリサイクルする方法と、コンテンツをリサイクルするかどうかを制御するコンテンツモードがあります。ビューが最初に表示されると、通常どおりコンテンツがレンダリングされ、結果は基になるビットマップにキャプチャされます。その後、ビューのジオメトリを変更しても、必ずしもビットマップが再作成されるとは限りません。代わりに、 contentMode propertyは、ビットマップを新しい境界に合わせて拡大縮小するか、ビューの1つのコーナーまたはエッジに単純に固定するかを決定します。

各ビューには、ビューのジオメトリが変更されたときにビューがどのように変更されるかを制御するコンテンツモデルがあります。リサイクルビューのジオメトリの変更と、RecyclingReuseがすべてのコンテンツを再利用するかどうかに応じて、コンテンツを再利用します。ビューが最初に表示されると、通常どおりコンテンツがレンダリングされ、結果が基になるビットマップにキャプチャされます。次に、ビュージオメトリを変更しても、必ずしもビットマップが再作成されるとは限りません。対照的に、 contentMode プロパティの値は、ビットマップを新しい境界に合わせて拡大縮小するか、単にビューのコーナーまたは側面に固定するかを決定します。



ビューのコンテンツモードは、次のことを行うたびに適用されます。

ビューのコンテンツモードは、次の状況に適用されます。



・ビューの幅または高さを変更します フレーム または 境界 長方形。

ビューフレームまたは長方形の境界線を変更します( フレーム または 境界 )の長さまたは幅。

・ビューに倍率を含む変換を割り当てます 変換 プロパティ。



ビューを与える 変換 属性には、倍率を含む変換が割り当てられます。

デフォルトでは、ほとんどのビューのcontentModepropertyはに設定されています UIViewContentModeScaleToFill 、これにより、ビューのコンテンツが新しいフレームサイズに合わせて拡大縮小されます。図1-2は、使用可能な一部のコンテンツモードで発生する結果を示しています。図からわかるように、すべてのコンテンツモードでビューの境界が完全に埋められるわけではなく、そうするとビューのコンテンツが歪む可能性があります。

デフォルトでは、ほとんどのビューのコンテンツモードプロパティはに設定されています UIViewContentModeScaleToFill この設定により、ビューのコンテンツが新しいフレームサイズに合うように拡大縮小されます。図1-2に、使用可能なコンテンツモードの効果の一部を示します。図からわかるように、すべてのコンテンツモードでビューの境界が完全に埋められるわけではなく、境界を埋めるコンテンツモードが歪む可能性があります。

図1-2コンテンツモードの比較

図1-2コンテンツモードの比較


2224431-1206bf944a47957c.png

コンテンツモードは、ビューのコンテンツをリサイクルするのに適していますが、コンテンツモードをに設定することもできます。 UIViewContentModeRedraw スケーリングおよびサイズ変更操作中にカスタムビューを再描画する場合に特に価値があります。ビューのコンテンツモードをこの値に設定すると、システムはジオメトリの変更に応じてビューのdrawRect:メソッドを呼び出すように強制されます。一般に、この値は可能な限り使用しないでください。また、標準のシステムビューでは使用しないでください。

コンテンツモードはビューコンテンツのリサイクルに最適ですが、コンテンツモードを次のように設定することもできます。 UIViewContentModeRedraw ズームおよびサイズ変更操作も再描画されるときにカスタムビューを明示的に再描画する場合の値。ビューコンテンツモードをこの値に設定すると、ビュージオメトリが変更されたときに、システムはdrawRect:メソッドを呼び出すように強制されます。一般に、この値はできるだけ使用しないようにし、標準のシステムビューでは使用しないようにしてください。

使用可能なコンテンツモードの詳細については、を参照してください。 UIViewクラスリファレンス

利用可能なコンテンツモードの詳細については、を参照してください。 UIViewクラスリファレンス

StretchableViews

4.伸縮可能なビュー

ビューの一部をストレッチ可能として指定して、ビューのサイズが変更されたときに、ストレッチ可能な部分のコンテンツのみが影響を受けるようにすることができます。通常、ビューの一部が繰り返し可能なパターンを定義するボタンやその他のビューには、伸縮可能な領域を使用します。指定するストレッチ可能な領域により、ビューの一方または両方の軸に沿ってストレッチできます。もちろん、2つの軸に沿ってビューを引き伸ばす場合、歪みを回避するために、ビューのエッジも繰り返し可能なパターンを定義する必要があります。図1-3は、この歪みがビューにどのように現れるかを示しています。ビューの元の各ピクセルの色が複製され、より大きなビューの対応する領域が塗りつぶされます。

ビューのサイズが変更されたときに、ストレッチ可能な部分のコンテンツのみが影響を受けるように、ビューの一部がストレッチ可能であることを示すことができます。通常、ボタン、または繰り返し可能なパターンを定義するビューの一部に伸縮可能な領域を使用します。指定するストレッチ可能な領域を使用すると、ビューを1つまたは2つの軸でストレッチできます。もちろん、ビューが2つの軸に沿って引き伸ばされる場合、歪みを回避するために、ビューのエッジも繰り返し可能なパターンを定義する必要があります。図1-3に歪みを示します。ビューの各初期ピクセルカラーは、より大きなビューの対応する領域にコピーされます。

図1-3ボタンの背景を伸ばす

図1-3ストレッチボタンの背景


2224431-1838dc868b82314e.png

ビューの伸縮可能な領域を指定するには、 contentStretch プロパティ。このプロパティは、値が範囲0.0から1.0に正規化されている長方形を受け入れます。ビューを拡大するとき、システムはこれらの正規化された値にビューの現在の境界と倍率を掛けて、どのピクセルを拡大する必要があるかを決定します。正規化された値を使用すると、ビューの境界が変更されるたびにcontentStretchプロパティを更新する必要がなくなります。

あなたはそれを使うことができます contentStretch 属性は、ビューの伸縮可能な領域を指定します。このプロパティは、値が0.0から1.0の範囲に正規化された長方形を受け入れます。ビューを拡大するとき、システムはこれらの正規化された値にビューの現在の境界とスケーリング係数を掛けて、どのピクセルを拡大する必要があるかを決定します。標準化された値を使用すると、ビューの境界が変更されるたびにcontentStretch属性を更新する必要がなくなります。

ビューのコンテンツモードは、ビューのストレッチ可能な領域がどのように使用されるかを決定する役割も果たします。ストレッチ可能な領域は、コンテンツモードによってビューのコンテンツが拡大縮小される場合にのみ使用されます。これは、ストレッチ可能なビューがサポートされているのは UIViewContentModeScaleToFillUIViewContentModeScaleAspectFit 、および UIViewContentModeScaleAspectFill contentmodes。コンテンツをエッジまたはコーナーに固定する(したがって実際にはコンテンツを拡大縮小しない)コンテンツモードを指定すると、ビューはストレッチ可能な領域を無視します。

ビューコンテンツモードは、ビューのストレッチ可能な領域の使用方法も決定します。伸縮可能な領域は、コンテンツモードでビューのコンテンツが拡大縮小される場合にのみ使用されます。これは、ストレッチ可能なビューがサポートするのは UIViewContentModeScaleToFillUIViewContentModeScaleAspectFit 、と UIViewContentModeScaleAspectFill コンテンツモード。コンテンツを片側または隅に固定する(つまり、コンテンツを拡大しない)コンテンツモードを指定すると、ビューは拡大可能な領域を無視します。

注: ビューの背景を指定する場合は、stretchableUIImageobjectを作成するよりも、contentStretchpropertyを使用することをお勧めします。 Stretchableviewsは、Core Animationレイヤーで完全に処理されます。これにより、通常、パフォーマンスが向上します。

注:ビューの背景を指定するときは、contentStretchプロパティを使用してストレッチ可能なUIImageオブジェクトを作成することをお勧めします。ストレッチ可能なビューはすべてカーネルアニメーションレイヤーで処理され、通常はパフォーマンスが向上します。

組み込みのアニメーションサポート

5.組み込みのアニメーションサポート

すべてのビューの背後にレイヤーオブジェクトを配置する利点の1つは、ビューに関連する多くの変更を簡単にアニメーション化できることです。アニメーションは、ユーザーに情報を伝達するための便利な方法であり、アプリケーションの設計時には常に考慮する必要があります。の多くのプロパティ UIView classareはアニメート可能です。つまり、ある値から別の値にアニメートするための半自動サポートが存在します。これらのanimablepropertiesの1つに対してアニメーションを実行するには、次のことを行う必要があります。

各ビューの背後にレイヤーオブジェクトを配置する利点の1つは、ビューに関連する多くの変換を簡単にアニメーション化できることです。アニメーションは、ユーザーに情報を渡すための便利な方法であり、アプリケーションの設計プロセスでは常に考慮する必要があります。 UIView クラスのプロパティの多くはアニメーション化されています。つまり、ある値から別の値へのアニメーションを半自動的にサポートします。これらのアニメーションプロパティでアニメーションを実行するには、次のことを行う必要があります。

1.アニメーションを実行することをUIKitに伝えます。

アニメーションを実行することをUIKitに伝えます。

2.プロパティの値を変更します。

属性の値を変更します。

aUIViewobjectでアニメーション化できるプロパティには、次のものがあります。

アニメーションをサポートするUIViewオブジェクトのプロパティは次のとおりです。

フレーム -これを使用して、ビューの位置とサイズの変更をアニメーション化します。

フレーム -ビューの位置とサイズをアニメーション化するために使用します。

境界 -これを使用して、ビューのサイズの変更をアニメーション化します。

境界 -ビューのサイズ変更をアニメーション化するために使用します。

センター -これを使用して、ビューの位置をアニメーション化します。

センター -ビューの配置をアニメーション化するために使用します。

変換 -これを使用して、ビューを回転または拡大縮小します。

変換 -ビューを回転またはズームするために使用します

アルファ -これを使用して、ビューの透明度を変更します。

アルファ -ビューの透明度を変更するために使用します

backgroundColor -これを使用して、ビューの背景色を変更します。

backgroundColor -ビューの背景色を変更するために使用します

contentStretch -これを使用して、ビューのコンテンツの拡大方法を変更します。

contentStretch — ビューの拡大方法を変更するために使用します

アニメーションが非常に重要な場所の1つは、あるビューのセットから別のビューのセットに移行するときです。通常、ビューコントローラを使用して、ユーザーインターフェイスのパーツ間の主要な変更に関連するアニメーションを管理します。たとえば、上位レベルから下位レベルの情報へのナビゲートを伴うインターフェイスの場合、通常、ナビゲーションコントローラを使用して、連続する各レベルのデータを表示するビュー間の遷移を管理します。ただし、ビューコントローラの代わりにアニメーションを使用して、2セットのビュー間のトランジションを作成することもできます。これは、標準のビューコントローラーアニメーションで目的の結果が得られない場所で行うことができます。

アニメーションアプリケーションの重要な部分は、あるビューセットから別のビューセットへの移行です。通常、View Controllerを使用して、ユーザーインターフェイスのさまざまな部分間の主要な変換に関連するアニメーションを管理します。たとえば、高度なナビゲーション情報から低レベルのナビゲーション情報を含むインターフェイスの場合、通常、ナビゲーションコントローラを使用してビューを管理し、連続する各データ間の遷移を表示します。ただし、アニメーションを使用して、ビューコントローラを使用せずに2つのビューセット間のトランジションを作成することもできます。これは、標準がアニメーションを制御しようとして、希望する効果が得られない場合に行うことができます。

UIKitclassesを使用して作成するアニメーションに加えて、CoreAnimationレイヤーを使用してアニメーションを作成することもできます。レイヤーレベルにドロップダウンすると、アニメーションのタイミングとプロパティをより細かく制御できます。

UIKitクラスを使用してアニメーションを作成することに加えて、カーネルアニメーションレイヤーを使用してアニメーションを作成することもできます。レベルに落ちると、より多くのアニメーションのタイミングとプロパティを制御できます。

ビューベースのアニメーションを実行する方法の詳細については、を参照してください。 「アニメーション。」 Core Animationを使用したアニメーションの作成の詳細については、を参照してください。 CoreAnimationプログラミングガイド そして CoreAnimationクックブック

ビューベースのアニメーションを実行する方法の詳細については、を参照してください。 「アニメーション。」 カーネルアニメーションを使用したアニメーションの作成の詳細については、を参照してください。 CoreAnimationプログラミングガイド CoreAnimationクックブック