Snapkit centerY ограничение центрирует элемент над центральной осью Y - PullRequest
0 голосов
/ 25 апреля 2019

Я пытаюсь создать пользовательский класс ячеек UICollectionView. Ячейка состоит из содержимого и метки. Я хочу, чтобы метка находилась в центре представления по горизонтали и вертикали, но вместо этого метка помещается выше центральной оси y представления содержимого.

Я убедился, что ограничения установлены, другие ограничения не установлены и что проблема затрагивает все представления в представлении содержимого (я добавил другое представление и установил его центральную ось Y в качестве теста, а также не работал). Я также установил контрастность представления содержимого и цветов фона ярлыка и подтвердил, что ярлык не лежит на центральной точке привязки представления содержимого.

Вот как я устанавливаю ограничения:

label.snp.makeConstraints{make in
            make.centerX.centerY.equalToSuperview()
        }

Here is what I get instead

Вот что я получаю вместо этого. Очевидно, что этикетка не отцентрирована вертикально. Вы можете видеть синий UIView, который я добавил в качестве теста, также не по центру по вертикали.

Ответы [ 3 ]

0 голосов
/ 26 апреля 2019

Можете ли вы попробовать следующий код.

class FilterCollectionViewCell: UICollectionViewCell {


    let labelTemp = UILabel()

    override func awakeFromNib() {

        labelTemp.backgroundColor = .white
        labelTemp.textColor = .black
        labelTemp.text = "testing"
        self.contentView.addSubview(labelTemp)
        labelTemp.snp.makeConstraints { (make) in
            make.centerX.centerY.equalTo(self.contentView)
        }
    }

}
0 голосов
/ 26 апреля 2019

Быстро и просто:

myLabel.snp.makeConstraints { (make) in
    make.center.equalTo(self.topView.snp.center)
}
0 голосов
/ 25 апреля 2019

Раньше я программно добавлял свои ограничения таким образом

self.view.addSubview(image)
image.centerYAnchor.constraint(equalTo: view.centerYAnchor).isActive = true
image.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true
image.heightAnchor.constraint(equalToConstant: 30).isActive = true
image.widthAnchor.constraint(equalToConstant: 30).isActive = true 

и мое изображение объявляется таким образом

let image: UIImageView = {
        let theImageView = UIImageView()
        theImageView.image = UIImage(named: "ico_return")
        theImageView.translatesAutoresizingMaskIntoConstraints = false
        return theImageView
    }()

Надеюсь, это поможет

...