如何为 UIImageView 的水平对齐设置布局约束

How to setup layout constraints for a horizontal alignment of UIImageView's

我正在尝试使用 Swift 中的自动布局来实现如下图 (http://i.stack.imgur.com/jKmGO.png) 所示的内容,但每次我都会遇到一些问题。谁能告诉我为 3、4、5 或更多图像视图在水平网格中实现这种排列的自动布局的最佳方法。

试试下面的代码(水平排列)

var arrayOfImages = [image1,image2,image3,image4]
var previousImage:UIView? = nil
let horizontalSpaceBetweenImages = 20.0
let viewToUse = self.view //change this view to the one in which you are adding images as subviews

for image in arrayOfImages {
    viewToUse.addSubview(image)
    if previousItem == nil {
        // this is the first item
        viewToUse.addConstraint(NSLayoutConstraint(item: viewToUse, attribute: .Leading, relatedBy: .Equal, toItem: image, attribute: .Leading, multiplier: 1.0, constant: 0.0))
    }
    else {
        viewToUse.addConstraint(NSLayoutConstraint(item: image, attribute: .Leading, relatedBy: .Equal, toItem: previousImage, attribute: .Trailing, multiplier: 1.0, constant: horizontalSpaceBetweenImages))
        viewToUse.addConstraint(NSLayoutConstraint(item: image, attribute: .Width, relatedBy: .Equal, toItem: previousImage, attribute: .Width, multiplier: 1.0, constant: 0.0))
    }
    previousImage = image
}

// now add trailing constraint for last image
viewToUse.addConstraint(NSLayoutConstraint(item: arrayOfImages.last, attribute: .Trailing, relatedBy: .Equal, toItem: viewToUse, attribute: .Trailing, multiplier: 1.0, constant: 0.0))

此代码整理水平对齐方式。然后添加垂直对齐约束应该是微不足道的(它们应该更容易实现)

如果您要在视图中切换 3、4 和 5 个图像,collectionView 将是您的最佳选择。但是,如果您尝试显示一定数量的图像(UIImages 的数量保持不变),您可以尝试执行此方法:

此处的所有内容都将基于设备大小可用的水平距离。因此,首先,您需要确定图像的高度。高度是否需要相对于宽度?或者每张图片的高度可以保持不变吗?

如果高度需要相对于宽度保持不变,请对每个图像设置 "Aspect Ratio" 约束。如果高度可以保持不变,请在每个图像上放置 "height constraint"。

接下来您需要为图像之间的距离设置约束。

此时您仍然会遇到错误,因为每张图片的宽度都不明确。要解决此问题,select 同时添加所有图像,然后添加约束 "Equal Widths." 只要您确保图像固定在顶部,您就不会再遇到自动布局问题这点。

如果我可以更清楚地了解这些步骤,请告诉我。

尝试以下步骤 1)首先 select 所有这些并向图像添加约束 EQUAL WIDTH 2) 在左边距和第一个图像视图之间设置前导 space(设为 d) 3)类似地在右边距和最后一个图像视图之间设置尾随space(让它成为d) 4) 现在在所有图像视图之间添加约束 HORIZONTAL DISTANCE(d) 例如

左边距-d-IMAGE1-d-IMAGE2-d-IMAGE3-d-IMAGE4-d-右边距

查看 Stanford Cs193p 第 8 课。类似的东西被认为是一个基本的计算器,具有相同的宽度和高度的键。