Как получить фрейм UIView, который был настроен через snapkit - PullRequest
0 голосов
/ 03 апреля 2019

Прежде всего, я очень хочу поблагодарить ребят, которые создали snapkit.Это действительно упростило настройку ограничений для 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)
}

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

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

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

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

1 Ответ

1 голос
/ 03 апреля 2019

«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
}
...