Как программно добавить ограничения из метки в UICollectionViewCell? - PullRequest
0 голосов
/ 14 января 2019

У меня есть вопрос относительно ограничений для UICollectionViewCell.

Изображение включено, чтобы помочь визуализировать то, что я имею в виду.

У меня есть UICollectionViewController. Внутри этого контроллера я добавил UICollectionViewCell, который занимает только часть экрана.

У меня такой вопрос: как добавить ограничения из метки (см. Изображение) к этому UICollectionViewCell, чтобы я знал, что метка всегда находится на одном и том же расстоянии от UICollectionViewCell. На изображении расстояние показано стрелкой (это ограничение, которое я хочу добавить).

enter image description here

Надеюсь, кто-нибудь может мне помочь.

Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 14 января 2019

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

Пример кода для добавления ограничений для метки в collectionViewCell:

    label = UILabel()
    self.addSubview(label)

    label.translatesAutoresizingMaskIntoConstraints = false

    // creating a top constraint related to cell content view top with constant 16
    let topConstraint = NSLayoutConstraint(item: label, attribute: .top, relatedBy: NSLayoutConstraint.Relation.equal, toItem: self, attribute: .top, multiplier: 1, constant: 16)
    let leadingConstraint = NSLayoutConstraint(item: label, attribute: .leading, relatedBy: NSLayoutConstraint.Relation.equal, toItem: self, attribute: .leading, multiplier: 1, constant: 16)
    let trailingConstraint = NSLayoutConstraint(item: label, attribute: .trailing, relatedBy: NSLayoutConstraint.Relation.equal, toItem: self, attribute: .trailing, multiplier: 1, constant: 16)

    // optional constraint
    //let heightConstaint = NSLayoutConstraint(item: label, attribute: .height, relatedBy: NSLayoutConstraint.Relation.equal, toItem: nil, attribute: .notAnAttribute, multiplier: 1, constant: 44)

    self.addConstraints([topConstraint, leadingConstraint, trailingConstraint])

Если я правильно понял ваш вопрос, вы хотите иметь сходные отношения между вашим collectionView и ярлыком.

Таким образом, вы должны написать тот же код, который я написал выше, но связать ограничения вашей метки с collectionView.

collectionView constraints

label constraints

0 голосов
/ 14 января 2019

Предполагая, что метка является подпредставлением от CollectionViewController, это можно сделать так:

label.topAnchor.constraint(equalTo: cell.bottomAnchor, constant: someConstant).isActive = true

Приведенный выше код работает для меня как минимум с UITableViewController и его ячейками, поэтому он также должен работать с UICollectionView.

...