Почему ограничения автоматического размещения не устанавливаются должным образом в методе willMove (toSuperView) в соответствии с суперпредставлением - PullRequest
0 голосов
/ 23 октября 2018

У меня проблема с установкой ограничений пользовательского пользовательского интерфейса, который загружается из пера и добавляется как подпредставление в контейнерное представление.Я пытаюсь добавить ограничения в метод willMove(toSuperView), но он работает не так, как ожидалось.Где наиболее подходящее место для установки ограничений для пользовательского UIView?

Вот код;

extension ErrorView {

    override func willMove(toSuperview newSuperview: UIView?) {
        super.willMove(toSuperview: newSuperview)
        guard let newSuperview = newSuperview else { return }
        translatesAutoresizingMaskIntoConstraints = false
        newSuperview.setConstraintHeight(to: self)
        SetConstraintWidth(to: newSuperview)
    }
}

имена setConstraintWidth и setConstraintHeight являются заполнителями.Вы можете думать, как они являются методами для установки ограничений.

Ответы [ 2 ]

0 голосов
/ 23 октября 2018

Из документов Apple (https://developer.apple.com/documentation/uikit/uiview/1622629-willmove):

Сообщает, что его суперпредставление может измениться на указанное суперпредставление.

Итак, это происходит до представление добавляется в новое представление.

Переопределение didAddSubview(), вероятно, является лучшим местом для добавления ограничений.

0 голосов
/ 23 октября 2018

Из того, что я знаю, переопределив Layoutsubviews (), я сделаю эту работу

override func layoutSubviews() {
    super.layoutSubviews()
    //funky stuff here
}

вот отличный ответ на похожую проблему: Правильная практика для создания подклассов UIView?

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