web-dev-qa-db-ja.com

iOS SDKUIViewContentModeScaleAspectFitとUIViewContentModeScaleAspectFill

UITableViewCellを提供するUITableViewCellStyleSubtitleスタイル、2行のテキスト、およびオプションのアクセサリビューを使用して、UIImageViewで表示したい画像があります。

ただし、UIImageViewのコンテンツモードをUIViewContentModeScaleAspectFitまたはUIViewContentModeScaleAspectFillのいずれかに設定すると、違いがないように見えます。これらのコンテンツモードはどちらも、画像全体を表示し、テキストを右にシフトして画像用のスペースを確保します。

これらが実際にどのように異なるかについての例はありますか?ドキュメントによると:

UIViewContentModeScaleAspectFit:
Scales the content to fit the size of the view by maintaining the aspect ratio. Any     remaining area of the view’s bounds is transparent.

UIViewContentModeScaleAspectFill:
Scales the content to fill the size of the view. Some portion of the content may be  clipped to fill the view’s bounds.

ただし、これらのコンテンツモードは、宣伝どおりに動作していないようです。

編集:私はSDK iOS4を実行しています。

16
Dalmazio

これらのモードに違いが見られない理由は、UITableViewCellが画像のアスペクト比に合うように画像ビューのサイズを自動的に変更するためです。コンテンツモードは、ビューのアスペクト比が画像のアスペクト比と異なる場合にのみ機能します。

カスタムlayoutSubviewsクラスのUITableViewCellをオーバーライドするか、自分で画像ビューを作成します(テーブルビューセルが提供するものは使用しないでください)。

9
omz

私も同じ問題を抱えていました。 Appleドキュメントが少し不足しているようです。

インターネットで検索して答えを見つけました。 http://www.iphonedevsdk.com/forum/iphone-sdk-development/2973-crop-image.html

基本的に、

img1.contentMode = UIViewContentModeScaleAspectFill; 
img1.clipsToBounds = YES;

もう少し凝ったものにしたい場合は、この投稿をチェックしてください: IImageViewの幅と高さを変更

35
Jon