如何在保持1:1比例的同时在UIImageView上设置最大宽度和高度?

时间:2017-08-09 12:02:13

标签: ios swift uiimageview uistoryboard nslayoutconstraint

我试图在故事板中这样做,但似乎无法弄明白。我有一个QR码(方形UIImageView)居中(垂直和水平)在另一个UIView,我想根据手机大小扩展一点,但我不希望它超过150x150,否则它看起来很奇怪。这是我试过的。非常感谢任何帮助。

Attempt

2 个答案:

答案 0 :(得分:2)

你想要:

  • 以超级视图为中心
  • 保持1:1的宽高比
  • 保持小于或等于150x150

所以,居中很明显(耶,自动布局)。 1:1的比例也很容易。诀窍是:

将所有4个边固定在>= 0的超视图边。

设置Width <= 150

然后---

设置 另一个 Width约束,这次Width Equals: 150少于Priority > 1000。我使用999并完成了这项工作。

enter image description here

当超视图小于150(在任一方向上)时,用>= 0固定边和顶部/底部会使其缩小。

答案 1 :(得分:0)

我已经使用了很长时间了。

(UIImage*) scaleImage:(UIImage*)image toSize:(CGSize)newSize {
CGSize scaledSize = newSize;
float scaleFactor = 1.0;
if( image.size.width > image.size.height ) {
    scaleFactor = image.size.width / image.size.height;
    scaledSize.width = newSize.width;
    scaledSize.height = newSize.height / scaleFactor;
}
else {
    scaleFactor = image.size.height / image.size.width;
    scaledSize.height = newSize.height;
    scaledSize.width = newSize.width / scaleFactor;
}

UIGraphicsBeginImageContextWithOptions( scaledSize, NO, 0.0 );
CGRect scaledImageRect = CGRectMake( 0.0, 0.0, scaledSize.width, 
scaledSize.height );
[image drawInRect:scaledImageRect];
UIImage* scaledImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();    

return scaledImage;
}