iOS: Как я могу определить размер представления в макете super view?

#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) в конце.