2011-01-26 6 views
36

私はドロップダウン "モード"について何か疑問に思っていますか?これには、「スケールする」、「アスペクトに合わせる」などが含まれます。私は今までそれを変更する必要はありませんでしたが、それでも私はそれが何のために使用できるのか不思議です。誰かが説明できますか?Interface Builderで "Scale to fill"、 "Aspect fit"などを提供する "Mode"プロパティとは何ですか?

答えて

26

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

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

は「各ビューは、ビューは、ビューのジオメトリの変化に応答して、その内容をリサイクルする方法を制御コンテンツのモードがあります[...] contentModeプロパティの値が決定しますビットマップを新しい境界に合わせてスケーリングするか、単にビューの1つの角または端に固定するかを指定します。

5

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

非常によくあなたの基本的なアイデアを与える必要があります。

+0

をだから、唯一のUIImageViewsに適用されますか?それがすべてのUIViewで利用できるのはなぜですか? – Krumelur

+1

実際にはUIViewから派生しています。公式文書をチェックしてください。 http://developer.apple.com/library/ios/#documentation/uikit/reference/UIView_Class/UIView/UIView.html#//apple_ref/occ/instp/UIView/contentMode – Bourne

+0

ええ、私はそれをすべて読んで、私は知っていますそれはUIViewから派生しているが、私はモードを変更するときに何の影響も見たことがない。したがって、私の質問:私はすべてUIImageViewを扱っていないときに効果を見ますか? – Krumelur

50

ビューのcontent mode propertyは、その内容がどのようにレイアウトされるべきかを示します。 Interface Builderでは、Attributes Inspectorでさまざまなモードを選択できます。

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と同じ結果を示していますが、背後ではもっと多くの作業を行っています。

コンテンツモードは、ビューの内容を再利用するための良いですが、あなたが特にカスタムビューを再描画したいときにもUIViewContentModeRedraw値にコンテンツモードを設定することができます。再描画について

documentation氏は述べていますスケーリングおよびサイズ変更操作中に発生します。ビューのコンテンツモードをこの値に設定すると、ジオメトリの変更に応じてビューの 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以外のビューのコンテンツモードに関する説明は、thisthisを参照してください。スウィフトは

  • 、コンテンツモードを設定するように設定するには、プログラムで使用すると、次のようにします。

    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 
    
+3

詳細な説明。私がここに見ているすべての例は 'UIImageView'についてですが、AppleはUIViewにそのプロパティを公開しています。それが混乱の原因です。 – Krumelur

+0

@Krumelur、私は私の答えを終え、あなたの質問とコメントを読んでいた後、私は[同じ質問](http://stackoverflow.com/questions/32152138/setting-content-mode-for-something-besides- uiimageview-in-ios)である。いくつかの良い説明[ここ](http://stackoverflow.com/questions/12827710/what-type-of-contents-uiviewcontentmode-mode-refers-to)があります。 – Suragch

+3

すばらしい説明。すべての視覚的な例を見ることはとても役に立ちます。 – Stonetip

関連する問題