Прежде всего, я хочу поблагодарить ребят, которые создали снапкит. Это действительно упростило установку ограничений для UIViews.

Но пока у меня простой вопрос: как мне получить доступ к свойству фрейма представления, которое я настраиваю с помощью этой библиотеки?

Например:

self.view.addSubview(contributePosterView)
self.contributePosterView.snp.makeConstraints { (make) in
    make.left.equalTo(self.view.snp.left)
    make.width.equalTo(self.view.bounds.width)
    make.top.equalTo(self.table.snp.bottom)
    make.bottom.equalTo(self.view.snp.bottom)
}

Как я могу получить доступ к свойству frame представления, которое я назвал contributePosterView?

Это важно для меня, особенно когда мне нужно настроить их в UIScrollview, используя свойство layoutSubviews указанного вида прокрутки.

Я проверил документацию по snapkit как мог, но до сих пор не нашел ответа.

Как мне это сделать? Любая помощь будет оценена по достоинству.

0
Pavan Vasan 3 Апр 2019 в 13:15

1 ответ

Лучший ответ

SnapKit предоставляет методы для добавления ограничений с использованием синтаксиса, который многим кажется более простым, чем стандартные методы NSLayoutContraint. Однако он ничего не делает с представлениями, чтобы невозможно было получить итоговые размеры фреймов.

Проблема в том, что вы, вероятно, делаете свои "мгновенные" вызовы в viewDidLoad(), а затем сразу пытаетесь получить фрейм. В этот момент все, что произошло, - это то, что ограничения были добавлены, но автоматическая компоновка не сделала своей работы.

Вы хотите переопределить viewDidLayoutSubviews(), после чего вы можете получить допустимый размер кадра:

override func viewDidLayoutSubviews() {
    super.viewDidLayoutSubviews()

    // now you can get the resulting frame
    let f = self.contributePosterView.frame

   // do what you want with the frame
}
1
DonMag 3 Апр 2019 в 13:11