Сбой во время проектирования при использовании программных ограничений и @IBDesignable - PullRequest
0 голосов
/ 03 мая 2018

Я пару дней крутил свои колеса на этом. Я не могу найти какие-либо демонстрации программных ограничений с @IBDesignable.

  1. Если я попытаюсь imgv.translatesAutoresizingMaskIntoConstraints = false. Затем устанавливается очевидный бесконечный цикл, и мне буквально приходится выходить из Xcode, снова открывать его и быстро удалять до того, как наступит время разработки.

  2. Как написано в настоящее время, у меня есть ограничения, которые должны изменить размер imgv на 200 ширины и высоты, но изменение значений на 300 не влияет на раскадровку. Так что, как будто ограничения не имеют никакого эффекта.

ВОПРОС: Как создать программные ограничения, которые будут отображаться на раскадровке, используя @IBDesignable? ## Заголовок ##

import UIKit

@IBDesignable
class tryTVCellTableViewCell: UITableViewCell {

    override func prepareForInterfaceBuilder() {
        setProperties()
    }

    override init(style: UITableViewCellStyle, reuseIdentifier: String?) {
        super.init(style: style, reuseIdentifier: reuseIdentifier)
        setProperties()
    }

    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
        setProperties()
    }

    public override func layoutSubviews() {
        super.layoutSubviews()
        setProperties()
    }

    func setProperties() {
        backgroundColor = .blue
        let imgv = UIImageView(frame: CGRect(x: 10, y: 20, width: 50, height: 50))
        let bundle = Bundle(for: type(of: self))
        let img = UIImage(named: "mountain", in: bundle, compatibleWith: traitCollection)
        assert(img != nil)
        imgv.image = img
        imgv.backgroundColor = .green
        let lab = UILabel(frame: CGRect(x: 100, y: 10, width: 300, height: 300))
        lab.text = "hkjlkjlkj;lkj;lkj;lkj;lkj;lkj;lkj;lkj;lkj;lkj;lkj;lkj;lkj;lkj;lkj;lkj;lkj;l;lkjk;j;i"
        addSubview(imgv)
        addSubview(lab)


        imgv.widthAnchor.constraint(equalToConstant: 200).isActive = true
        imgv.heightAnchor.constraint(equalToConstant: 200).isActive = true
        imgv.centerYAnchor.constraint(equalTo: self.centerYAnchor).isActive = true

    }
}

1 Ответ

0 голосов
/ 04 мая 2018

Просто попробуйте добавить еще раз

 imgv.translatesAutoresizingMaskIntoConstraints = false

после

addSubview(lab)

до

imgv.widthAnchor.constraint(equalToConstant: 200).isActive = true

Это должно работать.

...