检测iPhone应用程序的iPad 2x按钮

时间:2011-05-25 22:56:08

标签: iphone ipad

有没有办法检测到你的iPhone应用程序我们在iPad上运行2x / 1x?

我需要能够检测到我的应用程序每英寸点数的差异。

3 个答案:

答案 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;
}

致谢:http://www.markj.net/iphone-4-2x-graphics-scale-ipad/

另请参阅:http://struct.ca/2010/high-res-graphics-in-cocos2d/

答案 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”按钮更改比例。