Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 以编程方式在tableview单元格的中心设置一个按钮_Swift_Uitableview - Fatal编程技术网

Swift 以编程方式在tableview单元格的中心设置一个按钮

Swift 以编程方式在tableview单元格的中心设置一个按钮,swift,uitableview,Swift,Uitableview,我已经通过编程在tableview单元格中制作了一个按钮。我将按钮的x和y设置在单元格宽度和高度的中心。问题是,在更大的iPhone(Xs max和Xr)中,它会处于中间位置,但在更小的iPhone(如SE)中则不会。我不明白为什么当我告诉手机的中心时,不同的iPhone会有不同。 例如,包含此按钮的单元格称为“EditCell” 它将在函数中生成,并在viewDidLoad 有人能帮我吗?试试这个: let editBtn = UIButton(frame: CGRect(x: 0, y: 0

我已经通过编程在tableview单元格中制作了一个按钮。我将按钮的x和y设置在单元格宽度和高度的中心。问题是,在更大的iPhone(Xs max和Xr)中,它会处于中间位置,但在更小的iPhone(如SE)中则不会。我不明白为什么当我告诉手机的中心时,不同的iPhone会有不同。 例如,包含此按钮的单元格称为“EditCell”

它将在函数中生成,并在
viewDidLoad
有人能帮我吗?

试试这个:

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

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

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


您的代码建议您将其添加到
cellForRowAt
中,因此不要这样做,而是将其添加到cell自定义类init方法中(如果它是编程单元格)和
awakeFormNib
中(如果它是xib/prototype单元格)

非常感谢您,但它仍然存在较小的iPhone(SE)使用约束问题。
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
}