在 UIStackView 中缩放 UIImage 的图像以适应 iOS 应用中的屏幕大小
Scale images of UIImage in UIStackView to fit screen size in iOS app
在我用 Swift 3 编写的 iOS 应用程序上,我有 4 个 UIImages,每个 2 个在一个 UIStackView 中,2 个 UIStackViews 在另一个 UIStackView 中,如下图所示:
在图片中你可以看到我对图片的划分。
您还可以看到问题,当图像退出屏幕时用户无法看到完整图像,因为它被裁剪了。
所有图像在 Assets.xcassets
中的图像集上都是“2x”大小。
在属性检查器的 Main.storyboard
上,我将所有 4 个图像的内容模式更改为 "Scale To Fill"。我也在代码中这样做了:
phoneCallImage.contentMode = UIViewContentMode.scaleAspectFit
sendEmailImage.contentMode = UIViewContentMode.scaleAspectFit
sendSmsImage.contentMode = UIViewContentMode.scaleAspectFit
openFacebookImage.contentMode = UIViewContentMode.scaleAspectFit
我也尝试使用完整的 UIStackView(图片中的图像堆栈视图)来做到这一点:
imagesStackView.contentMode = UIViewContentMode.scaleAspectFit
我该怎么做才能解决这个问题并在不裁剪的情况下显示完整图像?
我设法解决了这个问题。
首先,我选择了完整的 UIStackView(图片中的 Images Stack View)并向其添加约束,以将边距设置为 0:
之后,我选择了 UIStackView 中的所有图像,并从约束菜单中将其宽度和高度更改为 171.5,以使其成为正方形:
在那之后,一切都与屏幕完美对齐。
您需要为单个图像和包含的堆栈视图设置约束。
对于每个图像,您需要指定一个等于最顶部堆栈视图的宽度约束,乘数为 0.5(父宽度的 50%),以便它随屏幕尺寸缩放。
然后,对于每张图片,您可能希望对宽高比使用约束以保持宽高比 1:1,以便高度也同样缩放。
然后对于顶部堆栈视图,您需要将其宽度也限制为父视图,然后为左边距和 y 位置添加约束。
查看图片了解约束条件和最终结果。
在我用 Swift 3 编写的 iOS 应用程序上,我有 4 个 UIImages,每个 2 个在一个 UIStackView 中,2 个 UIStackViews 在另一个 UIStackView 中,如下图所示:
在图片中你可以看到我对图片的划分。
您还可以看到问题,当图像退出屏幕时用户无法看到完整图像,因为它被裁剪了。
所有图像在 Assets.xcassets
中的图像集上都是“2x”大小。
在属性检查器的 Main.storyboard
上,我将所有 4 个图像的内容模式更改为 "Scale To Fill"。我也在代码中这样做了:
phoneCallImage.contentMode = UIViewContentMode.scaleAspectFit
sendEmailImage.contentMode = UIViewContentMode.scaleAspectFit
sendSmsImage.contentMode = UIViewContentMode.scaleAspectFit
openFacebookImage.contentMode = UIViewContentMode.scaleAspectFit
我也尝试使用完整的 UIStackView(图片中的图像堆栈视图)来做到这一点:
imagesStackView.contentMode = UIViewContentMode.scaleAspectFit
我该怎么做才能解决这个问题并在不裁剪的情况下显示完整图像?
我设法解决了这个问题。
首先,我选择了完整的 UIStackView(图片中的 Images Stack View)并向其添加约束,以将边距设置为 0:
之后,我选择了 UIStackView 中的所有图像,并从约束菜单中将其宽度和高度更改为 171.5,以使其成为正方形:
在那之后,一切都与屏幕完美对齐。
您需要为单个图像和包含的堆栈视图设置约束。
对于每个图像,您需要指定一个等于最顶部堆栈视图的宽度约束,乘数为 0.5(父宽度的 50%),以便它随屏幕尺寸缩放。
然后,对于每张图片,您可能希望对宽高比使用约束以保持宽高比 1:1,以便高度也同样缩放。
然后对于顶部堆栈视图,您需要将其宽度也限制为父视图,然后为左边距和 y 位置添加约束。
查看图片了解约束条件和最终结果。