2

UIImageView に配置したい (サーバーから取得した) 画像があります。画像は 373x500 です。UIImageView は 443x290 で、ビューはそれを引き伸ばしています。

UIImageView *myImageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 
                                                                         0, 
                                                                         500, 
                                                                         300)];

myImageView.image = [UIImage imageWithData:photoData];
myImageView.backgroundColor = [UIColor viewBackgroundColor];
myImageView.contentMode = UIViewContentModeScaleAspectFit;

NSLog(@"myImageView.image.size: %@", NSStringFromCGSize(myImageView.image.size));
NSLog(@"myImageView.frame.size: %@", NSStringFromCGSize(myImageView.frame.size));

[wrapperView addSubview:myImageView];

ログの読み取り:

2012-05-09 11:32:52.621[89145:1a303] myImageView.image.size: {373, 500}
2012-05-09 11:32:52.622[89145:1a303] myImageView.frame.size: {443, 290}

次のようになります。

ここに画像の説明を入力

「UIViewContentModeScaleAspectFit」は、その比率を維持し、画像を引き伸ばさないように指示するべきではありませんか?

4

3 に答える 3

1

clipsToBounds = YESビューにも設定する必要があります。

于 2012-05-09T16:42:55.700 に答える
0

UIViewContentModeScaleAspectFitビューの縦横比に合わせて画像を(名前が示すように)スケーリングします。画像を拡大縮小したくない場合はUIViewContentModeCenter、画像を本来のサイズでビューの中央に配置します。

于 2013-01-25T00:10:41.863 に答える
0

これを修正したのは、フレームを設定する前にコンテンツモードを設定することでした...

UIImageView *imageView = [UIImageView new];
imageView.myImage;
imageView.contentMode = UIViewContentModeScaleAspectFit;
imageView.frame = CGRectMake(...);
[self.view addSubiew:imageView];
于 2014-11-14T21:04:18.763 に答える