ドロップダウン「モード」とは何ですか? 「Scale to fill」、「Aspect fit」などが含まれています。今までそれを変更する必要はありませんでしたが、それでも何に使用できるのか知りたいです。誰かが説明できますか?
View Programming Guide は、あなたが尋ねていることの詳細に行きます。 「コンテンツモード」というセクションまでスクロールすると、探しているものが見つかります。
基本的にアップルによると:
「各ビューには、ビューのジオメトリの変更に応じてビューがコンテンツを再利用する方法を制御するコンテンツモードがあります[...] contentModeプロパティの値は、ビットマップを新しい境界に合わせてスケーリングするか、単に固定するかを決定しますビューの1つのコーナーまたはエッジ。」
ビューの コンテンツモードプロパティ は、そのコンテンツのレイアウト方法を示します。 Interface Builderでは、さまざまなモードを属性インスペクターで選択できます。
2つの画像ビューを使用して、さまざまなモードがどのように機能するかを見てみましょう。
画像の高さと幅は、UIImageView
のサイズに合わせて拡大されます。
画像の最も長い側(高さまたは幅)は、ビューに合わせて引き伸ばされます。これにより、画像全体が表示され、高さや幅がゆがむことなく、画像が可能な限り大きくなります。 (UIImageView
背景を青に設定して、サイズが明確になるようにします。)
画像の最も短い側(高さまたは幅)は、ビューに合わせて引き伸ばされます。 「アスペクトフィット」と同様に、画像の比率は元のアスペクト比から歪んでいません。
再描画は、独自のスケーリングとサイズ変更を行う必要があるカスタムビュー専用です。カスタムビューを使用していないため、Redrawを使用しないでください。ここでUIImageView
を指定すると、Scale to Fillと同じ結果が得られますが、裏で多くの作業を行っています。
Redrawについて documentation はこう言っています:
コンテンツモードはビューのコンテンツをリサイクルするのに適していますが、特にスケーリングとサイズ変更中にカスタムビューを再描画する場合は、コンテンツモードを
UIViewContentModeRedraw
値に設定することもできます。オペレーション。ビューのコンテンツモードをこの値に設定すると、システムはビューのdrawRect:
メソッドは、ジオメトリの変更に応答します。一般に、この値は可能な限り使用しないでください。また、標準のシステムビューでは使用しないでください。
画像はビューの中央に配置されますが、画像の長さと幅は拡大されません。
画像の上端はビューの上部で水平方向の中央に配置され、画像の長さと幅は引き伸ばされません。
画像の下部エッジはビューの下部の水平方向の中央に配置され、画像の長さと幅は引き伸ばされません。
画像の左端はビューの左側で垂直方向の中央に配置され、画像の長さと幅は引き伸ばされません。
画像の右端はビューの右側の垂直方向の中央にあり、画像の長さと幅は引き伸ばされません。
画像の左上隅がビューの左上隅に配置されます。画像の長さと幅は引き伸ばされません。
画像の右上隅がビューの右上隅に配置されます。画像の長さと幅は引き伸ばされません。
画像の左下隅がビューの左下隅に配置されます。画像の長さと幅は引き伸ばされません。
画像の右下隅がビューの右下隅に配置されます。画像の長さと幅は引き伸ばされません。
コンテンツ(私たちの場合は画像)がビュー(私たちの場合はUIImageView
)と同じサイズの場合、コンテンツモードを変更しても大きな違いはありません。
UIImageView
以外のビューのコンテンツモードについては、 this および this の質問を参照してください。
Swiftでは、プログラムでコンテンツモードを設定するように設定するには、次のようにします。
imageView.contentMode = UIViewContentMode.ScaleToFill
imageView.contentMode = UIViewContentMode.ScaleAspectFit
imageView.contentMode = UIViewContentMode.ScaleAspectFill
imageView.contentMode = UIViewContentMode.Redraw
imageView.contentMode = UIViewContentMode.Center
imageView.contentMode = UIViewContentMode.Top
imageView.contentMode = UIViewContentMode.Bottom
imageView.contentMode = UIViewContentMode.Left
imageView.contentMode = UIViewContentMode.Right
imageView.contentMode = UIViewContentMode.TopLeft
imageView.contentMode = UIViewContentMode.TopRight
imageView.contentMode = UIViewContentMode.BottomLeft
imageView.contentMode = UIViewContentMode.BottomRight
http://vocaro.com/trevor/blog/2009/10/12/resize-a-uiimage-the-right-way/
基本的なアイデアが非常によくわかるはずです。