在改变高度时按比例调整UIImageView的宽度

时间:2012-01-13 07:12:14

标签: iphone objective-c ios ipad uiimageview

我有以下代码:

UIImageView * imgView = [[UIImageView alloc] initWithImage:image];

NSLog(@"IMAGE SIZE WIDTH IS %f AND HEIGHT IS %f", imgView.frame.size.width, imgView.frame.size.height);

[imgView setUserInteractionEnabled:YES];
[imgView setContentMode:UIViewContentModeScaleAspectFit];

CGRect frame = imgView.frame;
frame.size.width = SCREEN_WIDTH_PORTRAIT;
[imgView setFrame: frame];
然而,这个观点的高度没有相应改变,出了什么问题?

2 个答案:

答案 0 :(得分:0)

您告诉视图的内容需要扩展,而不是视图本身。您必须同时设置宽度和高度。

如果您只是尝试使用方向更改进行缩放,则可以使用UIViewAutoresizingMask并将其设置为:

imgView.autoresizingMask = UIViewAutoresizingFlexibleWidth| UIViewAutoresizingFlexibleHeight;

这会在自动切换方向时拉伸。

编辑: 以下是更改高度和保持比率以及为新帧设置动画的方法:

CGRect frame = imgView.frame;
float ratio = frame.size.width/SCREEN_WIDTH_PORTRAIT;
frame.size.width = SCREEN_WIDTH_PORTRAIT;
frame.size.height *= ratio;
[UIView animateWithDuration:.25 animations:^{
    [imgView setFrame: frame];              
}];

答案 1 :(得分:0)

图像将适合具有相同高度的框架,因为您只更改宽度。因此,根据图像的纵横比,图像可能不会改变图像的大小。您可以确定UIImage的宽高比,然后使用新宽度计算高度。