myView.bounds.size возвращает одинаковое значение для всех размеров экрана - PullRequest
0 голосов
/ 29 апреля 2018

У меня есть subView, называемый contentView, который почти совпадает с superView.

Я спроектировал подпредставление в раскадровке с iPhoneX и добавил необходимые ограничения для растяжения для всех размеров экрана.

На экранах разных размеров вид выглядит растянутым, как определено ограничениями, но bound.size вида остается одинаковым на всех размерах экрана

contentView.bounds.width

выше на всех размерах экрана печатается следующее значение

375.0

Я добавляю больше подпредставлений в мой contentView в соответствии с его шириной, но на всех размерах экрана я получаю одинаковое значение.

Кажется, что 375 - это ширина в точках для iPhoneX, к которой я первоначально добавил contentView.

Есть ли причина для этого, поскольку поиск в Google этой проблемы не помог. Буду очень признателен, если кто-нибудь укажет мне правильное направление.

Вот мои ограничения

Ответы [ 2 ]

0 голосов
/ 29 апреля 2018

Добавить

self.view.layoutIfNeeded()
print(“\(myCustomView.bounds)”)

Тогда вы можете распечатать правильные границы.

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

Вы также можете сделать это в viewDidLayoutSubviews (), но если представление является подпредставлением подпредставления, оно может быть некорректным даже в этой функции.

0 голосов
/ 29 апреля 2018

Если вы ожидаете, что ограничения будут применены в viewDidLoad(), то это слишком рано. Предполагается, что представления готовы к ограничению только в viewDidLayoutSubviews().

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