2015-03-05 2 views
0

Я разрабатываю приложение, предназначенное для iOS 6.1 и выше, iPhone и iPads. Это в основном openGL и использует GLKit. У меня есть простой выбор цвета для изменения цветов. Это всего лишь квадрат с цветом и три ползунка: красный, зеленый и синий. Я перегружаю viewWillLayoutSubviews, чтобы сделать это: в портретном режиме квадрат сверху с ползунками внизу. В ландшафтном режиме ползунки перемещаются вправо. За исключением того, что я продолжаю получать неожиданное поведение в зависимости от симулятора (у меня только iPhone 5 iOS 8, и он ведет себя отлично).Размеры ландшафтной рамки, iOS 7 vs 8 vs 6

Так что я написал небольшой код отладки, чтобы увидеть, что происходит:

- (void)viewWillAppear:(BOOL)animated { 
    currentOrientation = (UIInterfaceOrientation)[[UIDevice currentDevice]orientation]; 
    if (currentOrientation == UIInterfaceOrientationUnknown) { 
     currentOrientation = [UIApplication sharedApplication].statusBarOrientation; 
    } 
    NSLog(@"Device: %@ OS: %@ Orientation: %@", ([SystemInfo deviceType] == iPad)[email protected]"iPad":@"iPhone", 
               ([SystemInfo operatingSystemIs8OrGreater])[email protected]"8":@"7", 
               (UIInterfaceOrientationIsPortrait(currentOrientation)[email protected]"portrait":@"landscape")); 
    NSLog(@"Frame dimensions: width=%d height=%d", (int)self.view.frame.size.width, (int)self.view.frame.size.height); 
    NSLog(@"Bounds dimensions: width=%d height=%d", (int)self.view.bounds.size.width, (int)self.view.bounds.size.height); 

SystemInfo просто немного класса вернуть информацию о системе. Я запускал его на симуляторах iPhone 5 и iPad 2, iOS 7.1 и 8.1, в портретной и альбомной ориентации. Вот что я получил:


iPhone 5 (7,1)
устройства: iPhone OS: 7 Ориентация: портрет
Размеры рамы: ширина = 320 высота = 568
Bounds размеры: ширина = 320 высота = 568

Прибор: iPhone OS: 7 Ориентация: пейзаж
размеры рамы: ширина = 568 высота = 320
Границы размеры: ширина = 568 высота = 320

iPhone 5 (8.1)
Устройство: iPhone OS: 8 Ориентация: портрет
Размеры рамы: ширина = 320 высота = 568
Bounds размеры: ширина = 320 высота = 568

устройства: iPhone OS: 8 Ориентация: пейзаж
Размеры рамы: ширина = 320 высота = 568
Границы размеры: ширина = 320 высота = 568

IPAD 2 (7.1)
Прибор: IPAD ОС: 7 Ориентация: портрет
размеры рамы: ширина = 768 высота = 1024
границы размеры: ширина = 768 высота = 1024

Прибор: IPAD ОС: 7 Ориентация: пейзаж
Размеры рамы: ширина = 1024 высота = 768
Границы размеры: ширина = 1024 высота = 768

IPAD 2 (8.1)
Прибор: IPAD ОС : 8 Ориентация: портрет
размеры рамы: ширина = 320 высота = 568
Границы размеры: ширина = 320 высота = 568

Прибор: IPAD ОС: 8 Ориентация: пейзаж
размеры рамы: ширина = 320 высота = 568
Bounds размеры: ширина = 320 высота = 568

Кажется, как будто IOS 7 помогает мне листать размеры рамки того, что они должны быть, кроме того, что я уже листать их, потому что IOS 8 не , Это действительно не имеет значения, я могу приспособиться. Но у меня есть 4 вопроса:

1) Что делает iOS 6? Я нацелился на него, и у меня больше нет симулятора.

2) Что у iPad 2 (8.1) симулятор? Он дает те же размеры, что и iPhone 5 (8.1). В результате мой выбор цвета составляет около 1/4. Должен ли я просто установить размеры в 1024x768 пейзаж 768x1024 портрет?

3) Что будет делать IOS 9? (Или, может быть, они пропустят 9, как Microsoft, и перейдут прямо к iOS X - ничего себе, если я сейчас смущен, это будет действительно что-то.)

4) Какими будут измерения следующего поколения IPADS? Могу ли я рассчитывать на 1024 и 768? Мне просто пришло в голову запустить код против симулятора Retina iPad, и результаты были точно такими же, как у iPad 2.

Заранее спасибо. Я знаю, что это немного похоже на другие вопросы, но все они казались мне очень расплывчатыми.

ответ

0

А, я думаю, у меня это есть. В раскадровке есть поле с надписью «Размер содержимого», где вы можете проверить «Использовать предпочтительный явный размер». По-моему, это проверено по умолчанию. Снимите флажок, и iOS 7 и 8 ведут себя одинаково. Я собираюсь угадать iOS 6 тоже.

Хотел бы я знать об этом неделю назад !!! Я до сих пор не понял, почему iPads на iOS 8 отправляют 320x568 в качестве измерений в мой выбор цвета (он загружается с наконечника, и я подозреваю, что там лежит проблема).

Смежные вопросы