2016-03-15 55 views
1

我想获得视图的屏幕大小,同时用户在iPad Pro中分割屏幕,以便我可以按照需求动态设置视图?如何在多任务时获得屏幕大小?

[UIScreen mainScreen] .bounds是给我的整个屏幕数据

+2

我想你应该处理这与iOS的自动布局和大小类。 – Moritz

+0

感谢您的快速回复,实际上我的应用程序有动态视图,所以我没有使用自动布局 – techloverr

+0

那时我只需要屏幕尺寸 – techloverr

回答

0

不要使用屏幕尺寸。一般不要使用全局变量。

如果您以编程方式进行操作 - 而且我们很多人都认为该选项与自动布局之间不存在不兼容性,就像旁观一样 - 使用视图的frame来确定视图内容应该有多大。

0

尝试[[UIApplication sharedApplication] keyWindow].bounds

注意当应用程序正在进入你可能会得到奇怪的结果/从后台状态返回,或者如果你做的窗户定制工作。

全文: 我不得不实施类似的东西,我自己的自定义大小的类,以确定是否我的多任务处理,支持通用的应用程序是在任何一个紧凑的,定期或满的状态(全状态定义为作为风景iPad非分屏) - 解决它有点像这样:

typedef NS_ENUM (NSInteger, OBDTraitStyle) { 
    OBDTraitStyleCompact, 
    OBDTraitStyleMedium, 
    OBDTraitStyleFull 
}; 

static NSNumber *_previousGlobalTraitStyleNumber = nil; 

@implementation UITraitCollection (OBD) 

- (OBDTraitStyle)obd_traitStyle 
{ 
    UIApplicationState state = [[UIApplication sharedApplication] applicationState]; 
    if (state == UIApplicationStateBackground) 
    { 
     if (_previousGlobalTraitStyleNumber != nil) 
     { 
      NSLog(@"App in background - returning previous trait style: %ld", (long)[_previousGlobalTraitStyleNumber integerValue]); 
      return [_previousGlobalTraitStyleNumber integerValue]; 
     } 
     else 
     { 
      NSLog(@"App in background - cannot return previous trait style, as it doesn't exist"); 
     } 
    } 

    OBDTraitStyle traitStyle = 0; 

    if (self.horizontalSizeClass == UIUserInterfaceSizeClassCompact) 
    { 
     traitStyle = OBDTraitStyleCompact; 
    } 
    else 
    { 
     UIWindow *window = [[UIApplication sharedApplication] keyWindow]; 

     if (window.traitCollection.horizontalSizeClass == UIUserInterfaceSizeClassCompact) 
     { 
      traitStyle = OBDTraitStyleCompact; 
     } 
     else 
     { 
      CGSize viewSize = window.bounds.size; 
      BOOL horizontalExpanded = (viewSize.width > 768); 

      if (horizontalExpanded == NO) 
      { 
       traitStyle = OBDTraitStyleMedium; 
      } 
      else 
      { 
       traitStyle = OBDTraitStyleFull; 
      } 
     } 
    } 

    _previousGlobalTraitStyleNumber = @(traitStyle); 
    return traitStyle; 
} 

@end 
相关问题