我对UIImageView显示图像的方式感到非常失望。
我有以下代码:
UIImageView *imgview = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 300, 100)];
imgview.image = [UIImage imageNamed:@"img.JPG"];
imgview.backgroundColor = [UIColor greenColor];
imgview.contentMode = UIViewContentModeScaleAspectFit;
[self.view addSubview:imgview];
我得到的是以下屏幕截图:
http://img26.imageshack.us/img26/3686/screenshot20130123at629.png
[图像被拉伸到UIImageView的全宽,甚至没有达到全高]
原始图片:
http://img248.imageshack.us/img248/341/screenshot20130123at638.png
答案 0 :(得分:34)
设置尺寸必须在设置contentMode
后进行[imageView setContentMode: UIViewContentModeScaleAspectFit];
imageView.frame = CGRectMake(x, y, width, height);
答案 1 :(得分:7)
我遇到了同样的问题。在我的项目中,使用UIImage
创建的imageWithCIImage:
从未尊重其插入的contentMode
UIImageView
。
某些图片也有奇怪的属性导致同样的问题。使用Photoshop将其转换为 PNG 始终可以使用它们。
不使用contentMode
:
CIImage * __strong ciImage = [CIImage imageWithContentsOfURL:url];
_image = [UIImage imageWithCIImage:ciImage];
UIImageView
似乎根据CGImage
调整大小。
您需要将CIImage渲染为CGImage,并且可以将其用作UIImage。这适用于UIViewContentModeAspectFit
。
例如使用createCGImage:fromRect:
,或者从一开始就更好地使用CGImage
。
答案 2 :(得分:0)
这是一个愚蠢的人,所以我为此感到骄傲。最重要的是我最终在这个SO帖子上认为contentMode = UIViewContentModeScaleAspectFit被打破了,实际上真正被打破的是我对结果的期望。我在方形视图中使用方形图像,因此Fit和Fill具有完全相同的效果。当我无法让它在广场内宽屏时,我就像个婴儿一样哭。
答案 3 :(得分:0)