Как программно расположить кнопку по правому краю UITableCell с полем? - PullRequest
0 голосов
/ 02 апреля 2019

Я пытаюсь расположить кнопку справа от UITableCell, но она не работает должным образом. Я использую код ниже.

override func awakeFromNib() {
    flagBtn = UIButton(frame: CGRect(x: self.frame.maxX, y: 0, width: 30, height: 20))
    contentView.addSubview(flagBtn)
    // ...
}

maxX не дает полную ширину.

pos

Ответы [ 2 ]

2 голосов
/ 02 апреля 2019

Вы можете использовать ограничения для достижения этой цели.

override func awakeFromNib() {
    flagBtn = UIButton()
    contentView.addSubview(flagBtn)

    flagBtn.translatesAutoresizingMaskIntoConstraints = false
    flagBtn.rightAnchor.constraint(equalTo: contentView.rightAnchor).isActive = true
    flagBtn.topAnchor.constraint(equalTo: contentView.topAnchor).isActive = true
    flagBtn.widthAnchor.constraint(equalToConstant: 30).isActive = true
    flagBtn.heightAnchor.constraint(equalToConstant: 20).isActive = true
}

Здесь Вы можете узнать больше о NSLayoutAnchors

1 голос
/ 02 апреля 2019

Сначала объявите UIbutton как ленивое свойство, как показано ниже

lazy var flagBtn: UIButton = {
    let btn = UIButton()
    btn.setTitle("foo", for: .normal)
    btn.backgroundColor = #colorLiteral(red: 1, green: 0, blue: 0, alpha: 1)
    btn.translatesAutoresizingMaskIntoConstraints = false
    return btn
}()

Во-вторых, добавьте ограничение

required init?(coder aDecoder: NSCoder) {
    super.init(coder: aDecoder)
    contentView.addSubview(flagBtn)

    contentView.topAnchor.constraint(equalTo: flagBtn.topAnchor, constant: 5.0).isActive = true
    contentView.rightAnchor.constraint(equalTo: flagBtn.rightAnchor, constant: 5.0).isActive = true
    flagBtn.heightAnchor.constraint(equalToConstant: 30).isActive = true
    flagBtn.widthAnchor.constraint(equalToConstant: 30).isActive = true
}

Надеюсь, оно вам поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...