对齐 Swift 中不同单元格的按钮 3

Align Buttons from different cells in Swift 3

我有两个按钮位于 table 的不同单元格上,我希望它们对齐。

第一个单元格由 3 个按钮组成,我只是将它们设置为等宽。 但是对于下面的另一个,我想将它设置为与上面的对齐方式相同。

首先,我尝试保存当前视图的宽度并将其设置为按钮,但没有成功:

let curentWidth = self.viewThatneedsToBeDivided.bounds.width / 3
self.optionBtnCommon.frame.size.width = CGFloat(curentWidth)

然后我尝试设置一个约束,这确实给了我正确的尺寸,但对齐方式很糟糕。

let widthConstraint = NSLayoutConstraint (item: optionBtnCommon, attribute: NSLayoutAttribute.width, relatedBy: NSLayoutRelation.equal, toItem: nil, attribute: NSLayoutAttribute.notAnAttribute, multiplier: 1, constant: curentWidth)
self.optionBtnCommon.superview?.addConstraint(widthConstraint)
self.optionBtnCommon.contentHorizontalAlignment = .center
self.viewThatneedsToBeDivided.layoutIfNeeded()

您不会直接关联它们,因为它们位于不同的单元格中,但您有几个选择:

  1. 更改约束,使它们不再相互关联(等宽),而是与单元格相关(每个约束为单元格或子视图宽度的 0.33)。然后,您可以为单个按钮提供相同的约束。基本上你需要让它们与两者之间一致的东西相关,唯一的东西就是细胞。
  2. 你可以用隐藏的视图伪造它。所以添加按钮,然后添加另外两个视图并设置相同的约束。然后隐藏其他视图(或根据需要清除颜色)。
  3. 考虑设置一些布局指南。这些比真正的虚拟视图更好用。

您可以将所有按钮放在同一个单元格中,将前三个按钮嵌入水平堆栈视图,后三个相同,然后将两个堆栈视图嵌入垂直堆栈视图。这应该会给你必要的力量来正确对齐它们。

如果您谈论的是您在问题中显示的支票图像。

请记住,使用以下代码设置按钮的居中对齐

self.optionBtnCommon.contentHorizontalAlignment = .center
  1. 如果必须居中对齐,请记住行距和 按钮的宽度约束必须相同,只有这样这些图像才会 对齐。
  2. 如果行距相同但宽度不同,则必须保持左对齐。
  3. 或者您有第三个选项可以在按钮中设置图像插入 属性 以手动调整对齐方式。