Я пытаюсь получить видимую область рисования для подкласса GLKViewController. В iOS 7 я бы определил ориентацию, а затем отрегулировал [UIScreen mainScreen] .bounds.size соответственно. Тогда я бы вычитал высоту navigationBar и statusBarFrame и вуаля! - фактический размер области рисования.viewWillTransitionToSize и неправильная навигацияBar и statusBarFrame высоты
Теперь я пытаюсь обновить для iOS 8 с viewWillTransitionToSize, однако, когда я поворачиваю устройство (у меня есть UIInterfaceOrientationMaskAll on), размер, который передан, неверен. Фактически, ширина является правильной для представления, но не высотой (которая включает в себя высоту навигационной панели и высоты строки состояния).
Я видел пару вопросов о SO, которые относятся, но ничего, что действительно имеет дело с этой проблемой, по крайней мере ничего, что помогло мне.
Это не кажется мне, что делать что-нибудь интересное, поправьте меня, если я ошибаюсь:
- (void)viewWillTransitionToSize : (CGSize) size
withTransitionCoordinator : (id<UIViewControllerTransitionCoordinator>) coordinator
{
[super viewWillTransitionToSize:size withTransitionCoordinator:coordinator];
NSLog(@"size changed : orig(%f,%f) mainScreen(%f,%f)", size.width, size.height, [UIScreen mainScreen].bounds.size.width, [UIScreen mainScreen].bounds.size.height);
[self updateViews:size];
}
выходы для перехода в альбомную:
size changed : orig(568.000000,256.000000) mainScreen(320.000000,568.000000)
, где высота передается от viewWillTransitionToSize, как представляется:
320 - (2*32) = 256
, а затем следующий поворот к портрету:
size changed : orig(320.000000,536.000000) mainScreen(568.000000,320.000000)
где появляется высота передается от viewWillTransitionToSize быть:
568 - 32 = 536
случается высота навигационной панели в ландшафтном режиме (если что-нибудь значит).
Так что мои вопросы: как viewWillTransitionToSize получает этот размер? Как это учитывает дополнительные бары, которые меняют размеры или исчезают в зависимости от ориентации? И что самое главное, почему он использует эти неправильные высоты?
это тот же вопрос, я имею дело с сейчас - я получаю точно такие же номера, как вы получаете, когда мой экран вращается с той же несовпадения (32 или 64 балла). Проблема для меня в том, что я использую аргумент «размер» для получения новой высоты и ширины представления, а затем используя эти числа для вычисления размера подвид. – Natalia