обнаружить кнопку iPad 2x для приложения iPhone - PullRequest
6 голосов
/ 26 мая 2011

Есть ли способ определить, что ваше приложение для iPhone работает на iPad 2x / 1x?

Мне нужно иметь возможность определять разницу в точках на дюйм для моего приложения.

Ответы [ 3 ]

6 голосов
/ 26 мая 2011

Проверьте свойство 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/

2 голосов
/ 18 апреля 2012

Поскольку вы не можете зарегистрироваться для _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");
    }
}
0 голосов
/ 08 февраля 2012

Вы можете обнаружить изменение, зарегистрировавшись для уведомления _UIClassicApplicationWillChangeZoomNotificationName, а затем обработать изменение масштаба, используя более или менее метод, описанный @magma в его ответе._UIClassicApplicationWillChangeZoomNotificationName сообщит вам, когда кнопка «2x» / «1x» использовалась для изменения масштаба.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...