iOS 7旋转设备未检测到横向屏幕边界

时间:2015-01-03 16:44:05

标签: ios ios7 ios8 screen-orientation detect

尝试更改多个标签和图片宽度取决于设备旋转后的屏幕边界。这是我尝试过的:

- (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));        
    }

}

当我改变方向时,它应该记录不同的宽度和高度

(例如:{480,320}& {320,480})

上正常工作, 但我在模拟器和设备上测试的结果大小相同。

任何想法都会受到赞赏。

1 个答案:

答案 0 :(得分:0)

仅限iOS8

[UIScreen mainScreen].bounds

是面向接口的(参见WWDC 2014的会议“iOS 8中的View Controller Advancements”),这意味着在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;
}