UIScreen mainScreen bounds.size.height always 1024



为什么无论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));
}

这是边界的正确功能,我相信它会在启动的方向上返回屏幕的大小。您需要查看视图控制器或导航控制器,以了解框架的适当大小,具体取决于方向。

这是我为修复它所做的。

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

它始终在纵向模式下返回坐标。如果您有其他方向,则必须更改它。

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,这是一个免费的在线警报视图,但它可以让您了解如何获取坐标。

最新更新