有没有办法检测到你的iPhone应用程序我们在iPad上运行2x / 1x?
我需要能够检测到我的应用程序每英寸点数的差异。
答案 0 :(得分:6)
检查scale
属性:
[[UIScreen mainScreen] scale]
这是一个方便的功能:
+(BOOL) screenIs2xResolution {
return 2.0 == [MyDeviceClass mainScreenScale];
}
+(CGFloat) mainScreenScale {
CGFloat scale = 1.0;
UIScreen* screen = [UIScreen mainScreen];
if ([UIScreen instancesRespondToSelector:@selector(scale)]) {
scale = [screen scale];
}
return scale;
}
答案 1 :(得分:2)
由于您无法注册_UIClassicApplicationWillChangeZoomNotificationName
,因此它似乎是一个内部常量,我所做的是:
注册任何通知:
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(changeZoom:) name:nil object:nil];
然后检查相应的值:
- (void)changeZoom:(NSNotification*)notification
{
if ([[notification name] isEqualToString:@"_UIClassicApplicationWillChangeZoomNotificationName"])
{
NSLog(@"Zoom changed to %@", [[[notification userInfo] objectForKey:@"_UIClassicIsZoomedUserInfoKeyName"] boolValue] == 0 ? @"1x" : @"2x");
}
}
答案 2 :(得分:0)
您可以通过注册通知_UIClassicApplicationWillChangeZoomNotificationName
来检测更改,然后使用@magma在其答案中概述的方法或多或少地处理比例更改。 _UIClassicApplicationWillChangeZoomNotificationName
会告诉您何时使用“2x”/“1x”按钮更改比例。