我想獲得視圖的屏幕大小,同時用戶在iPad Pro中分割屏幕,以便我可以按照需求動態設置視圖?如何在多任務時獲得屏幕大小?
[UIScreen mainScreen] .bounds是給我的整個屏幕數據
我想獲得視圖的屏幕大小,同時用戶在iPad Pro中分割屏幕,以便我可以按照需求動態設置視圖?如何在多任務時獲得屏幕大小?
[UIScreen mainScreen] .bounds是給我的整個屏幕數據
不要使用屏幕尺寸。一般不要使用全局變量。
如果您以編程方式進行操作 - 而且我們很多人都認爲該選項與自動佈局之間不存在不兼容性,就像旁觀一樣 - 使用視圖的frame
來確定視圖內容應該有多大。
嘗試[[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
我想你應該處理這與iOS的自動佈局和大小類。 – Moritz
感謝您的快速回復,實際上我的應用程序有動態視圖,所以我沒有使用自動佈局 – techloverr
那時我只需要屏幕尺寸 – techloverr