手动复制的最佳方法是什么
contentMode = UIViewContentModeScaleAspectFit;
不使用它?

我需要缩放UIImageView(在滚动视图内)以适合宽高比。我需要知道图像的新大小才能在其上绘制覆盖图。

最佳答案

最近,我需要在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:通过该代码,我设法在使用该内容模式的图像视图内完美地查看了图像,因此它可以正常工作。

关于iphone - 为UIImageView手动缩放UIImage,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10691191/

10-14 22:14