如何在固定宽度和自动布局的情况下正确缩放图像?

7
我有一张动态UIImage和一个宽度固定为280.0像素的UIImageView,我正在使用自动布局。在UIImage视图上,我设置了宽度和高度约束,并降低了高度约束的优先级。我选择了“aspect fit”,并将内容抱紧和压缩优先级提高到1000。 在这种情况下,UIImageView被重新调整大小以保持比例,但高度比我想要的大。纵横比保持不变,因为UIImageView上下有空白区域。我想去掉这些空白区域,自动调整高度以完美地适应UIImage图片。
2个回答

7

像这样的东西...

(这段话需要翻译吗?)
UIImage *image = ...;
UIImageView *imageView = ...;

imageView.image = image;
float ar = image.size.width/image.size.height;

NSLayoutConstraint* aspectConstraint = [NSLayoutConstraint constraintWithItem: imageView
                                                         attribute: NSLayoutAttributeWidth
                                                         relatedBy: NSLayoutRelationEqual
                                                            toItem: imageView
                                                         attribute: NSLayoutAttributeHeight
                                                        multiplier: ar
                                                          constant: 0];

[parentView addConstraint: aspectConstraint];

谢谢!你的答案是正确的。我已经用可视化约束方式解决了问题。 - matteosilv
这个答案完美而且简单。 - xleon

1
我已经解决了,方法如下:

-(CGFloat) scaleImageAutoLayout:(UIImageView *)imageView withWidth:(CGFloat)width
{
    CGFloat scale = width/imageView.image.size.width;
    CGFloat height = imageView.image.size.height * scale;
    NSDictionary *viewsDictionary = NSDictionaryOfVariableBindings(imageView);
    [imageView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:[NSString     stringWithFormat:@"V:[imageView(%f)]",ceilf(height)]
                                                                  options:0 metrics:nil    views:viewsDictionary]];
    return height;
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接