Подтвердить что ты не робот

Высота UIView не соответствует iPhone 5

Я переношу свои приложения поверх одного и использую UIPickerView. В методе viewDidLoad я создаю сборщик и устанавливаю его y как self.view.frame.size.height так, чтобы он был выключен. Затем я просто двигаю его, когда это необходимо.

На iPhone 5 self.view.frame.size.height по-прежнему возвращается 480, но UIView правильно заполняет экран.

Я даже пытался использовать CGRectGetHeight(self.view.bounds), думая, что он может вернуть что-то другое... без кости. Любые идеи относительно того, почему это может произойти.

4b9b3361

Ответ 1

Это связано с тем, что размер, выбранный вами в представлении nib, будет использоваться до viewWillAppear: (BOOL) animated. Тогда он примет правильный размер.

Однако вы можете использовать следующий код, чтобы иметь правильный размер, так как viewDidLoad вызывается:

CGSize viewSize = [[UIScreen mainScreen] bounds].size;
viewSize = CGSizeMake(viewSize.width, viewSize.height - STATUS_BAR_HEIGHT);

STATUS_BAR_HEIGHT - 20, но это зависит от вашего приложения. Вам может понадобиться или не нужно добавлять эту строку.

ИЗМЕНИТЬ

Проблема с использованием границ mainScreen заключается в том, что кадр не изменяется при изменении ориентации. Так оно и было разработано. Вы можете работать со следующим:

    CGSize viewSize = [[UIScreen mainScreen] bounds].size;

    if(UIInterfaceOrientationIsLandscape(CURRENT_ORIENTATION)){
        viewSize = CGSizeMake(viewSize.height, viewSize.width - STATUS_BAR_HEIGHT);

    } else {
        viewSize = CGSizeMake(viewSize.width, viewSize.height - STATUS_BAR_HEIGHT);
    }

CURRENT_ORIENTATION [[UIApplication sharedApplication] statusBarOrientation];

Ответ 2

Я занимался той же проблемой. Я попытался получить раму представлений в - (void)viewDidLoad, но обнаружил, что он не обновляется до тех пор, пока - (void)viewWillAppear:(BOOL)animated не будет вызван.

Итак, попробуйте получить раму представлений в - (void)viewWillAppear:(BOOL)animated, и вы должны быть в порядке.

Ответ 3

Похоже, что iOS обнаруживает, что приложение предназначено для использования на iPhone 5 после обнаружения изображения [email protected] в вашем комплекте. Как разработать или перенести приложения для разрешения экрана iPhone 5? содержит полный ответ, в котором описывается весь процесс.

Ответ 4

Я нашел проблему. Мой nib должен быть установлен на "iPhone 5 full screen" (я думаю, что он назвал). Я предполагаю, что он загружает размер представления из nib и не учитывает autoResizeMask.

Когда размер представления в IB установлен в "Размер: Нет", вид не имеет размера справа. Он должен быть установлен в "Размер: Retina 4 Full Screen". Странно.