我有以下代码:
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];
然而,这个观点的高度没有相应改变,出了什么问题?
答案 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的宽高比,然后使用新宽度计算高度。