UIScreen主屏幕bounds.size.height总是1024

时间:2012-10-10 17:32:36

标签: objective-c ios cgrectmake uiscreen

无论iPad应用程序采用何种布局模式,为什么[UIScreen mainScreen].bounds.size.height始终会返回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));
}

3 个答案:

答案 0 :(得分: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));
}

答案 1 :(得分:4)

这是边界的正确功能,我相信它会在启动方向上返回屏幕大小。您需要查看viewController或导航控制器,以获得相应尺寸的框架,这取决于方向。

答案 2 :(得分: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,这是一个免费的在线警报视图,但它可以让您了解如何获得协同坐标。