Лучший способ определить, есть ли isIpad? - PullRequest
1 голос
/ 18 мая 2011

У меня есть универсальное приложение, которое меняет компоновку экрана в зависимости от того, какое устройство у пользователя.Кажется, это работает довольно хорошо, но я получил один пользовательский вызов (и прислал мне снимки экрана) его iPhone 4, показывающий ему представление iPad вместо представления iPhone.Я не смог продублировать его ни на одном из телефонов, которые у нас есть, но мне интересно, есть ли лучший способ сделать это после выхода iOS 4.3.

+(BOOL)isIpad{
  return ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad);
}

Альтернативно, есть ли способ определения размера экрана?Я в основном использую это, чтобы определить, насколько широкими должны быть элементы в таблице, но если Apple выпустит iPad 3 с дисплеем Retina, было бы неплохо, чтобы приложение просто все соответствующим образом отрегулировало.
Также полезно, если приложение находится впортрет или пейзаж.Сделайте так, чтобы он просто привязывался к краям, как элементы в WPF.

Ответы [ 4 ]

3 голосов
/ 18 мая 2011

При загрузке XIB для универсального приложения это, или то, что вы уже делаете, кажется единственным способом:

NSString *xibName = (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)?@"SomeView~iPad":@"SomeView";

Что касается размера экрана, это должно работать:

CGRect screenSize = [[UIScreen mainScreen] bounds];
1 голос
/ 01 апреля 2016

UIUserInterfaceIdiomPad больше не поддерживается.Новый способ сделать это будет использовать TraitCollections.Его можно вызывать только в представлениях.

-(BOOL) isiPad{
    return self.view.traitCollection.horizontalSizeClass == UIUserInterfaceSizeClassRegular && self.view.traitCollection.verticalSizeClass == UIUserInterfaceSizeClassRegular;
}

См. Документацию Apple здесь

1 голос
/ 11 августа 2014

Это похоже на миллиард лет, но я наткнулся на это в Google, так что я решил опубликовать плохо документированную, но очень полезную функцию. Если вы добавите ~ ipad в конец имени файла для вашего конкретного пера для iPad, он автоматически загрузит его. Та же логика, что и у @ 2x для загрузки изображений. Таким образом, ваше перо iPhone будет называться myview.xib, а ваш ipad myview ~ ipad.xib и iOS будут корректно загружать версию ipad, где это необходимо. Fancy!

0 голосов
/ 18 мая 2011

Возможно, оно имеет предыдущую версию приложения и конфликтует с новой!

Попробуйте удалить старую и переустановить новую!Оно работает!Я уже сталкивался с этой проблемой.

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