2012-10-10 51 views
1

爲什麼[UIScreen mainScreen].bounds.size.height總是返回1024,無論iPad應用程序採用哪種佈局模式?UIScreen mainScreen bounds.size.height always 1024

我想要一個基於佈局模式動態生成的自定義視圖,我總是得到1024的高度回來?

+ (CGRect)rectForView { 
NSLog(@"The height is %f", [UIScreen mainScreen].bounds.size.height); 
return CGRectMake(0.0f, 0.0f, [[UIScreen mainScreen]bounds].size.width, (([UIScreen mainScreen].bounds.size.height) - 100)); 
} 

回答

5

這是我所做的修復它。

+ (CGRect)rectForView { 

if (UIInterfaceOrientationIsLandscape([[UIDevice currentDevice] orientation])) { 

    return CGRectMake(0.0f, 0.0f, [[UIScreen mainScreen]bounds].size.height, (([UIScreen mainScreen].bounds.size.width) - 100)); 

} 

NSLog(@"The height is %f", [UIScreen mainScreen].bounds.size.height); 
return CGRectMake(0.0f, 0.0f, [[UIScreen mainScreen]bounds].size.width, (([UIScreen mainScreen].bounds.size.height) - 100)); 
} 
4

這是正確的界限功能,我相信它會返回屏幕的大小,以便它啓動的方向。您需要查看viewController或導航控制器,以獲取與方向相關的幀的適當大小。

4

它始終以縱向模式返回座標。如果你有另一個方向,你必須改變它。

UIScreen *screen = [UIScreen mainScreen]; 
CGRect screenRect = screen.bounds; // implicitly in Portrait orientation. 

if (UIDeviceOrientationIsLandscape(orientation)) { 
    CGRect temp; 
    temp.size.width = screenRect.size.height; 
    temp.size.height = screenRect.size.width; 
    screenRect = temp; 
} 

上面的代碼是直接從OLGhostAlertView.m這是一個免費的警報視圖在線拍攝,但它給你一個想法,如何讓coorect座標。

相關問題