2016-03-15 52 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 
相關問題