Высота UIView не соответствует iPhone 5
Я переношу свои приложения поверх одного и использую UIPickerView
. В методе viewDidLoad я создаю сборщик и устанавливаю его y как self.view.frame.size.height
так, чтобы он был выключен. Затем я просто двигаю его, когда это необходимо.
На iPhone 5 self.view.frame.size.height
по-прежнему возвращается 480, но UIView
правильно заполняет экран.
Я даже пытался использовать CGRectGetHeight(self.view.bounds)
, думая, что он может вернуть что-то другое... без кости. Любые идеи относительно того, почему это может произойти.
Ответы
Ответ 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". Странно.