以编程方式在表格视图单元格的中央设置一个按钮

时间:2019-05-07 01:15:13

标签: swift uitableview

我已通过编程方式在表格视图单元格中创建了一个按钮。我将按钮的x和y设置在单元格的宽度和高度的中心。问题是,它将在较大的iPhone(Xs max和Xr)中居中,但在较小的iPhone(如SE)中不会。我不明白为什么当我告诉单元格的中心时,在不同的iPhone中会有所不同。 例如,内部带有此按钮的单元格称为“ EditCell”

let EditBtn = UIButton(frame: CGRect(x: EditCell.frame.width/2, y: EditCell.frame.height/2, width: 60, height: 60))

它将在函数中创建,并在viewDidLoad中被调用 有人可以帮我吗?

2 个答案:

答案 0 :(得分:2)

您可以尝试

var editBtn = UIButton(type:.system)
editBtn.translatesAutoresizingMaskIntoConstraints = false

NSLayoutConstraint.activate([ 
    editBtn.centerXAnchor.constraint(equalTo: self.contentView.centerXAnchor),
    editBtn.centerYAnchor.constraint(equalTo: self.contentView.centerYAnchor) 
])

override func layoutSubviews() {
  super.layoutSubviews()
  editBtn.center = self.contentView.center
}

您的代码建议您将其添加到cellForRowAt内,因此不要这样做,而是将其添加到单元格自定义类init方法的内部(如果它是程序单元格的话)以及awakeFormNib的内部(如果它的xib /原型细胞

答案 1 :(得分:0)

尝试一下:

let editBtn = UIButton(frame: CGRect(x: 0, y: 0, width: 60, height: 60))
editBtn.center = EditCell.contentView.center