【问题标题】:UIScreen mainScreen bounds.size.height always 1024UIScreen mainScreen bounds.size.height 总是 1024
【发布时间】:2012-10-10 17:32:36
【问题描述】:

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

【问题讨论】:

    标签: objective-c ios cgrectmake uiscreen


    【解决方案1】:

    这是我为修复它所做的。

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

        它总是以纵向模式返回坐标。如果您有其他方向,则必须更改它。

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

        【讨论】:

          猜你喜欢
          • 2015-01-07
          • 1970-01-01
          • 2014-10-04
          • 2017-01-25
          • 2014-11-24
          • 2013-07-02
          • 2012-09-06
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多