2015-01-03 2 views
0

Была попытка изменить несколько меток и ширину изображений в зависимости от границ экрана после поворота устройства. Вот что я пытался:iOS 7 вращающееся устройство, не обнаруживающее границы ландшафтного экрана

- (void)viewDidLayoutSubviews{ 
    if(UIInterfaceOrientationIsLandscape([[UIDevice currentDevice] orientation])) { 

     CGSize newSize; 

     newSize = CGSizeMake([[UIScreen mainScreen] bounds].size.width,[[UIScreen mainScreen] bounds].size.height); 

     NSLog(@"%@",NSStringFromCGSize(newSize));  

    }else if (UIInterfaceOrientationIsPortrait([[UIDevice currentDevice] orientation])){ 

     CGSize newSize; 

     newSize = CGSizeMake([[UIScreen mainScreen] bounds].size.width,[[UIScreen mainScreen] bounds].size.height); 

     NSLog(@"%@",NSStringFromCGSize(newSize));   
    } 

} 

Он должен войти различную ширину и высоту, когда я изменить ориентацию

(как на : {480320} & {320480})

работает отлично на , , но у меня одинаковые результаты тестирования результатов как на симуляторе, так и на устройства.

Любая идея будет оценена по достоинству.

ответ

0

только из iOS8

[UIScreen mainScreen].bounds 

является интерфейсом-ориентированный (смотрите на сессии «View Controller продвижения в прошивке 8» от WWDC 2014), это означает, что в ландшафтном режиме на высоту и ширину iOS8 перепутано.

Вы можете создать вспомогательный метод, как показано ниже, чтобы иметь такое же поведение:

+(CGRect)getScreenBounds 
{ 
    CGRect bounds = [UIScreen mainScreen].bounds; 
    if (([[[UIDevice currentDevice] systemVersion] floatValue] >= 8.0) && UIInterfaceOrientationIsLandscape([UIApplication sharedApplication].statusBarOrientation)) { 
     bounds.size = CGSizeMake(bounds.size.height, bounds.size.width); 
    } 
    return bounds; 
} 

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

  • Нет связанных вопросов^_^