在我用 Swift 3 编写的 iOS 应用程序中,我有 4 个 UIImages,每个 2 个在一个 UIStackView 中,2 个 UIStackViews 在另一个 UIStackView 中,如下图所示:
在图片中你可以看到我对图像所做的划分。
您还可以看到问题,当图像退出屏幕时用户无法看到完整图像,因为它被裁剪了。
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 位置添加约束。
有关约束和最终结果,请参见图像。
关于ios - 在 UIStackView 中缩放 UIImage 的图像以适应 iOS 应用程序中的屏幕大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43780313/