ios - 在 UIStackView 中缩放 UIImage 的图像以适应 iOS 应用程序中的屏幕大小

标签 ios swift uiimage crop uistackview

在我用 Swift 3 编写的 iOS 应用程序中,我有 4 个 UIImages,每个 2 个在一个 UIStackView 中,2 个 UIStackViews 在另一个 UIStackView 中,如下图所示:

enter image description here

在图片中你可以看到我对图像所做的划分。

您还可以看到问题,当图像退出屏幕时用户无法看到完整图像,因为它被裁剪了。

Assets.xcassets 中的图像集的所有图像都是“2x”大小。

在属性检查器的 Main.storyboard 上,我将所有 4 个图像的内容模式更改为“缩放以填充”。我也在代码中这样做了:

phoneCallImage.contentMode = UIViewContentMode.scaleAspectFit
sendEmailImage.contentMode = UIViewContentMode.scaleAspectFit
sendSmsImage.contentMode = UIViewContentMode.scaleAspectFit
openFacebookImage.contentMode = UIViewContentMode.scaleAspectFit

我还尝试使用完整的 UIStackView(图片中的图像堆栈 View )来做到这一点:

imagesStackView.contentMode = UIViewContentMode.scaleAspectFit

我该怎么做才能解决这个问题并在不裁剪的情况下显示完整图像?

最佳答案

您需要为单个图像和包含的堆栈 View 设置约束。

对于每个图像,您需要指定一个等于最顶部堆栈 View 的宽度约束,乘数为 0.5(父宽度的 50%),以便它随屏幕尺寸缩放。

然后,对于每张图片,您可能希望对宽高比使用约束以将其保持为 1:1,以便高度也可以同样缩放。

然后对于顶部堆栈 View ,您需要将其宽度也限制为父 View ,然后为左边距和 y 位置添加约束。

有关约束和最终结果,请参见图像。

You dont need the width constraints The end result

关于ios - 在 UIStackView 中缩放 UIImage 的图像以适应 iOS 应用程序中的屏幕大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43780313/

相关文章:

ios - 将图像旋转 180 度

swift - 如何在 Swift 中分配和解包可选数组对象?

ios - 使用具有图像全分辨率的 bezierpath 屏蔽图像

ios - 测试中的 iPhone 应用程序几天后崩溃

c# - XCode 无法创建配置文件,ARKit

ios - 在 Swift 协议(protocol)上应用 self 约束与在协议(protocol)的扩展上应用 self 约束之间的区别

ios - UIImageView 中的图像粘在 UIImage 空间的底部

objective-c - 将父类的实例转换为其子类

ios - 如何从元组数组中找到元组元素的索引? iOS, swift

ios - 如何使用FMDB将数据保存到SQLite数据库中?