如何在保持 1:1 比率的同时设置 UIImageView 的最大宽度和高度?
How can I set max width and height on UIImageView while maintaining 1:1 ratio?
我正在尝试在情节提要中执行此操作,但似乎无法弄清楚。我有一个 QR 码(方形 UIImageView)居中(垂直和水平)在另一个 UIView 中,我想根据 phone 大小扩展一点,但我不希望它超过 150x150,否则它看起来很奇怪。这是我试过的。非常感谢任何帮助。
我用了很久
(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;
}
您想:
- 在父视图中居中
- 保持1:1纵横比
- 保持小于或等于 150x150
所以,居中是显而易见的(是的,自动布局)。 1:1比也容易。诀窍是:
将所有 4 个边固定到 >= 0
的父视图边。
设置Width <= 150
。
然后 ---
设置另一个Width
约束条件,这次Width Equals: 150
但是Priority
的小于1000
。我用了 999
并且它完成了工作。
当超级视图小于 150(在任一方向)时,用 >= 0
固定边和 top/bottom 使其缩小。
我正在尝试在情节提要中执行此操作,但似乎无法弄清楚。我有一个 QR 码(方形 UIImageView)居中(垂直和水平)在另一个 UIView 中,我想根据 phone 大小扩展一点,但我不希望它超过 150x150,否则它看起来很奇怪。这是我试过的。非常感谢任何帮助。
我用了很久
(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;
}
您想:
- 在父视图中居中
- 保持1:1纵横比
- 保持小于或等于 150x150
所以,居中是显而易见的(是的,自动布局)。 1:1比也容易。诀窍是:
将所有 4 个边固定到 >= 0
的父视图边。
设置Width <= 150
。
然后 ---
设置另一个Width
约束条件,这次Width Equals: 150
但是Priority
的小于1000
。我用了 999
并且它完成了工作。
当超级视图小于 150(在任一方向)时,用 >= 0
固定边和 top/bottom 使其缩小。