Swift: невозможно добавить ограничение в ImageView - PullRequest
0 голосов
/ 13 марта 2020

Я добавляю UberLo go в строку меню моего приложения, используя ImageView. Однако lo go панорамируется в верхний левый угол ячейки. Я попытался перецентрировать его в ячейку с помощью онлайн-видео. AddConstraintWithFormat работает, но не добавляет ограничение. Кто-нибудь может помочь? Спасибо!

class MenuCell: BaseCell {

    let imageView: UIImageView = {
        let iv = UIImageView()
        iv.image = UIImage(named: "UberLogo")
        return iv
    }()


    override func setupViews() {
        super.setupViews()

        addSubview(imageView)
        imageView.translatesAutoresizingMaskIntoConstraints = false
        addConstraintsWithFormat("H:|[v0(28)]|", views: imageView)
        addConstraintsWithFormat("V:|[v0(28)]|", views: imageView)
        addConstraint(NSLayoutConstraint(item: imageView, attribute: .centerX, relatedBy: .equal, toItem: self, attribute: .centerX, multiplier: 1, constant: 0))
        addConstraint(NSLayoutConstraint(item: imageView, attribute: .centerY, relatedBy: .equal, toItem: self, attribute: .centerY, multiplier: 1, constant: 0))
    }
}

1 Ответ

0 голосов
/ 13 марта 2020

Согласно документации addConstraint:

При разработке для iOS 8.0 или более поздней версии установите для свойства isActive ограничения значение true вместо прямого вызова метода addConstraint (_ :). Свойство isActive автоматически добавляет и удаляет ограничение из правильного представления.

Кроме того, NSLayoutConstraint имеет следующую функцию:

class func activate(_ constraints: [NSLayoutConstraint])

Попробуйте активировать такие ограничения, как это, и посмотрите, если они помогает:

addSubview(imageView)
imageView.translatesAutoresizingMaskIntoConstraints = false
NSLayoutConstraint.activate([
  imageView.heightAnchor.constraint(equalToConstant: 28),
  imageView.widthAnchor.constraint(equalToConstant: 28),
  imageView.centerXAnchor.constraint(equalTo: self.centerXAnchor),
  imageView.centerYAnchor.constraint(equalTo: self.centerYAnchor)
])
...