ios – 使用AutoLayout缩放UIImageView以适应宽度

ios – 使用AutoLayout缩放UIImageView以适应宽度,第1张

概述我在UIScrollView上有一个UI ImageView,我希望它适合设备宽度,然后自动设置其高度,以保持图像比例. 我正在使用自动布局,所以我使用约束将UIImageView绑定到屏幕的顶部,左侧和右侧边缘. 我的问题是,UIImageView自动调整其框架大小以适应UIImage高度.之后我无法真正改变这个框架,因为它让UIImageView和其他UI元素之间存在间隙,而这些元素应该只是在 我在UIScrollVIEw上有一个UI ImageVIEw,我希望它适合设备宽度,然后自动设置其高度,以保持图像比例.

我正在使用自动布局,所以我使用约束将UIImageVIEw绑定到屏幕的顶部,左侧和右侧边缘.
我的问题是,UIImageVIEw自动调整其框架大小以适应UIImage高度.之后我无法真正改变这个框架,因为它让UIImageVIEw和其他UI元素之间存在间隙,而这些元素应该只是在它之下.

我通过在将图像放入UIImageVIEw之前手动调整图像大小来找到一种解决方法,但效率不高,并且在调整视图大小时会产生问题,例如在设备旋转时.

有没有人找到一种方法来强制UIImageVIEw改变它的框架并保持它而不是使用图像的大小?

皮埃尔

编辑:我添加了截图,以便您可以看到问题.

这是预期的结果:

解决方法 好的,我找到了解决问题的合适方案.

我像这样计算出我想要的正确高度:

correctedHeight = screenWIDth / wIDth * height

之后,我在updateVIEwConstraints方法中以编程方式添加高度约束.

我用这个代码:

[imageVIEw addConstraint:[NSLayoutConstraint constraintWithItem:imageVIEw attribute:NSLayoutAttributeHeight relatedBy:NSLayoutRelationEqual toItem:nil attribute:NSLayoutAttributeNotAnAttribute multiplIEr:1.0 constant: correctimageVIEwHeight]];

之后要考虑两件事:

>每次调用此方法时都删除约束(否则最终会出现冲突的约束).为此,我使用[imageVIEw removeConstraint:imageVIEw.constraints.lastObject];
> put [super updateVIEwConstraints];在方法内部.如果你忘记了,它会崩溃.

我还没有这样做,但我可以很容易地看到当设备旋转时我如何更新我的correctHeight变量.

总结

以上是内存溢出为你收集整理的ios – 使用AutoLayout缩放UIImageView以适应宽度全部内容,希望文章能够帮你解决ios – 使用AutoLayout缩放UIImageView以适应宽度所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1012724.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存