手动复制的最佳方式是什么
contentMode = UIViewContentModeScaleAspectFit;
不使用它?
我需要缩放UIImageView(在滚动视图中)以适合宽高比。我需要知道图像的新大小,以便在其上绘制叠加层。
答案 0 :(得分:3)
最近,我需要在ImageView中找到图像的框架,为该图像添加可触摸的视图,这就是我做到的:
-(void)calculateScaleAndContainerFrame{
if(!imageView || !image) return;
CGSize imageSize = image.size;
CGSize imageViewSize = imageView.frame.size;
float imageRatio = imageSize.width / imageSize.height;
float viewRatio = imageViewSize.width / imageViewSize.height;
if(imageRatio > viewRatio){
scale = imageSize.width / imageViewSize.width;
}else{
scale = imageSize.height / imageViewSize.height;
}
CGRect frame = CGRectZero;
frame.size = CGSizeMake(roundf(imageSize.width / scale), roundf(imageSize.height / scale));
frame.origin = CGPointMake((imageViewSize.width - frame.size.width) / 2.0, (imageViewSize.height - frame.size.height) / 2.0);
[container setFrame:frame];
}
我非常确定您可以将它作为指南,将imageViewSize替换为滚动视图的内容大小(或者您要将图像放入的视图)。
注1:在我的情况下,我需要垂直居中视图,如果不这样做,只需在我设置帧原点的行上将y设置为0。如果您不想水平居中图像,则x相同。
注2:无论如何,这不是您可以插入项目和工作的代码,您可能必须阅读,理解它,然后将该方法应用于您自己的项目。我现在没有时间根据您的需要对其进行修改。
注3:使用该代码,我设法在使用该内容模式的图像视图内的图像上完美地获得视图,因此它可以工作。