1

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

3 回答 3

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));
}
于 2012-10-10T17:56:16.320 回答
4

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

于 2012-10-10T17:39:00.063 回答
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 坐标。

于 2012-10-11T17:55:34.947 回答