我想旋转我的UIImageView并根据宽高比设置大小。 但我有一些问题。首先,我粘贴我的代码,然后解释问题。
imageView.size = CGSizeMake(myWidth, myHeight);
[imageView setContentMode:UIViewContentModeCenter];
所以这两行设置了我的imageView的大小和contentMode。 当我这样做时,图像正确显示。因此,当设备旋转时,我会抓住旋转通知和
if ([self isLandscape]) {
CGFloat aspect = myHeight / myWidth;
imageView.size = CGSizeMake(myWidth/aspect, myWidth);
[self rotateView:imageView withDegree:degree];
imageView.origin = CGPointMake(x, y);
} else {
[self rotateView:imageView withDegree:degree];
imageView.origin = CGPointMake(x, y);
imageView.size = CGSizeMake(myWidth, myHeight);
}
然后轮换完成。但是你可以看到我也做了一个大小调整 问题是我的imageView具有无法覆盖的最小大小。 但我发现如果我将我的imageView的contentMode属性从UIViewContentModeCenter更改为UIViewContentModeScaleAspectFit,那么它将运行良好但尺寸小于我的预期。这是为什么? :(我怎么解决这个问题?如果你有任何帮助,请帮忙!
答案 0 :(得分:1)
ScaleAspectFit只会放大内容,使其全部可见且不会发生剪裁。如果您希望内容填充视图并可能有一些剪辑,则应使用UIViewContentModeScaleAspectFill
代替。
但是,如果您只想为每个维度强制执行最小尺寸,则可以使用MAX宏。
CGSize mySize = CGSizeMake(myWidth, myHeight);
mySize.x = MAX(mySize.x, myXMin);
mySize.y = MAX(mySize.y, myYMin);
imageView.size = mySize;
此外,只需检查您的景观大小是否真正意味着(width*width/height, width)
而不只是(height, width)
。