#ios #view #interface-builder #frame #bounds
#iOS #Вид #конструктор интерфейсов #рамка #границы
Вопрос:
Когда я использую self.view.frame.size.height , он получает высоту дочернего элемента, а не высоту того, как вид будет вписываться в общий макет. Я получаю то же значение, используя self.view.bounds.size.height и super.view.bounds.size.height .
Буду признателен за любую помощь.
Ответ №1:
Спросите в нужное время. Только после того, как представление будет готово к отображению, iOS выяснила, какого размера оно будет на самом деле. Переместите свой код, который зависит от того, какой вид имеет правильный размер viewWillAppear
viewDidLoad
init
, в метод вместо или.
Ответ №2:
В Xcode 4 вы должны выбрать свой контроллер представления, содержащий UIScrollView, и установить «Смоделированные показатели» в инспекторе атрибутов IB следующим образом:
Это гарантирует, что для вашего UIScrollView будет установлен правильный размер, чтобы заполнить доступное пространство во время разработки. Похоже, вы используете более старую версию Xcode / IB, и я не могу точно вспомнить, где были эти настройки, но они где-то там.
С макетом, предназначенным для размещения пространства, занимаемого панелью вкладок, вы должны иметь возможность запрашивать размер UIScrollView в любое время и получать правильные значения.
Комментарии:
1. Можно ли установить этот «предполагаемый» статус программно?
2. Эти показатели просто используются IB во время создания пользовательского интерфейса и не имеют никакого смысла во время выполнения. Созданный файл nib указывает координаты и размер вида в фактических значениях точек, т.Е. Ваш UIScrollView будет иметь ширину = 320 и высоту = 411 (для iPhone). Без имитируемой нижней панели вкладок ваш UIScrollView будет иметь размер (320×460) в конце.