我想获得视图的屏幕大小,同时用户在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