UIImageView旋转并调整大小

时间:2010-02-01 13:35:00

标签: iphone objective-c

我想旋转我的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,那么它将运行良好但尺寸小于我的预期。这是为什么? :(我怎么解决这个问题?如果你有任何帮助,请帮忙!

1 个答案:

答案 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)