我有一个内容模式 Aspect Fit 大小为 220x155 的 UIImageView。我正在以不同的分辨率动态插入不同的图像,但都大于 UIImageView 的大小。由于内容模式设置为 Aspect Fit,图像会根据比例缩放以适合 UIImageView。
我的问题是,例如,如果 UIImageView 内的图像缩放到 220x100,我希望 UIImageView 也从 155 的高度缩小到 100,以避免元素之间的空间。
我怎样才能做到这一点?
我有一个内容模式 Aspect Fit 大小为 220x155 的 UIImageView。我正在以不同的分辨率动态插入不同的图像,但都大于 UIImageView 的大小。由于内容模式设置为 Aspect Fit,图像会根据比例缩放以适合 UIImageView。
我的问题是,例如,如果 UIImageView 内的图像缩放到 220x100,我希望 UIImageView 也从 155 的高度缩小到 100,以避免元素之间的空间。
我怎样才能做到这一点?
我编写了这个方法,以便在加载图像后获取图像视图的框架。因此,对我的要求与您的情况相同:
1)具有宽高比内容模式的图像视图 2)获取图像的确切帧(这样您可以重新定位图像视图)
希望这可以帮助:
- (CGRect) getFrameOfImage:(AsyncImageView *) imgView
{
if(!imgView.loaded)
return CGRectZero;
CGSize imgSize = imgView.image.size;
CGSize frameSize = imgView.frame.size;
CGRect resultFrame;
if(imgSize.width < frameSize.width && imgSize.height < frameSize.height)
{
resultFrame.size = imgSize;
}
else
{
float widthRatio = imgSize.width / frameSize.width;
float heightRatio = imgSize.height / frameSize.height;
float maxRatio = MAX (widthRatio , heightRatio);
NSLog(@"widthRatio = %.2f , heightRatio = %.2f , maxRatio = %.2f" , widthRatio , heightRatio , maxRatio);
resultFrame.size = CGSizeMake(imgSize.width / maxRatio, imgSize.height / maxRatio);
}
resultFrame.origin = CGPointMake(imgView.center.x - resultFrame.size.width/2 , imgView.center.y - resultFrame.size.height/2);
return resultFrame;
}
我在这里使用,AsyncImageView
但它与UIImageView
. 要记住的重要一点是在加载图像后调用此方法。
干杯!
它非常简单,您只需要获取图像的实际大小,可以通过
UIImage *image = [UIImage imageName:@""];
那么你只需要设置框架就像: -
imageView.frame = CGRectMake(0.0, 0.0, image.size.width, image.size.height);
希望这对您有所帮助。
一旦 imageview 的图像设置为新图像(并因此缩放),您可以获取 imageview 内图像的高度(imageview.image.size.height)并相应地设置 imageview 的高度(帧)。