web-dev-qa-db-ja.com

「Scale to fill」、「Aspect fit」などを提供するInterface Builderの「Mode」プロパティとは何ですか?

ドロップダウン「モード」とは何ですか? 「Scale to fill」、「Aspect fit」などが含まれています。今までそれを変更する必要はありませんでしたが、それでも何に使用できるのか知りたいです。誰かが説明できますか?

40
Krumelur

View Programming Guide は、あなたが尋ねていることの詳細に行きます。 「コンテンツモード」というセクションまでスクロールすると、探しているものが見つかります。

基本的にアップルによると:

「各ビューには、ビューのジオメトリの変更に応じてビューがコンテンツを再利用する方法を制御するコンテンツモードがあります[...] contentModeプロパティの値は、ビットマップを新しい境界に合わせてスケーリングするか、単に固定するかを決定しますビューの1つのコーナーまたはエッジ。」

26
Q8i

ビューの コンテンツモードプロパティ は、そのコンテンツのレイアウト方法を示します。 Interface Builderでは、さまざまなモードを属性インスペクターで選択できます。

enter image description here

2つの画像ビューを使用して、さまざまなモードがどのように機能するかを見てみましょう。

enter image description here

塗りつぶす

enter image description here

画像の高さと幅は、UIImageViewのサイズに合わせて拡大されます。

アスペクトフィット

enter image description here

画像の最も長い側(高さまたは幅)は、ビューに合わせて引き伸ばされます。これにより、画像全体が表示され、高さや幅がゆがむことなく、画像が可能な限り大きくなります。 (UIImageView背景を青に設定して、サイズが明確になるようにします。)

アスペクトフィル

enter image description here

画像の最も短い側(高さまたは幅)は、ビューに合わせて引き伸ばされます。 「アスペクトフィット」と同様に、画像の比率は元のアスペクト比から歪んでいません。

再描画

enter image description here

再描画は、独自のスケーリングとサイズ変更を行う必要があるカスタムビュー専用です。カスタムビューを使用していないため、Redrawを使用しないでください。ここでUIImageViewを指定すると、Scale to Fillと同じ結果が得られますが、裏で多くの作業を行っています。

Redrawについて documentation はこう言っています:

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

センター

enter image description here

画像はビューの中央に配置されますが、画像の長さと幅は拡大されません。

enter image description here

画像の上端はビューの上部で水平方向の中央に配置され、画像の長さと幅は引き伸ばされません。

enter image description here

画像の下部エッジはビューの下部の水平方向の中央に配置され、画像の長さと幅は引き伸ばされません。

enter image description here

画像の左端はビューの左側で垂直方向の中央に配置され、画像の長さと幅は引き伸ばされません。

正しい

enter image description here

画像の右端はビューの右側の垂直方向の中央にあり、画像の長さと幅は引き伸ばされません。

左上

enter image description here

画像の左上隅がビューの左上隅に配置されます。画像の長さと幅は引き伸ばされません。

右上

enter image description here

画像の右上隅がビューの右上隅に配置されます。画像の長さと幅は引き伸ばされません。

左下

enter image description here

画像の左下隅がビューの左下隅に配置されます。画像の長さと幅は引き伸ばされません。

右下

enter image description here

画像の右下隅がビューの右下隅に配置されます。画像の長さと幅は引き伸ばされません。

ノート

  • コンテンツ(私たちの場合は画像)がビュー(私たちの場合は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
    
57
Suragch

http://vocaro.com/trevor/blog/2009/10/12/resize-a-uiimage-the-right-way/

基本的なアイデアが非常によくわかるはずです。

5
Bourne