Donc, j'ai une application universelle et je confie la taille du contenu d'un UIScrollView
. Évidemment, la taille du contenu va être différente sur les iPhones et les iPads. Comment puis-je définir une certaine taille pour les iPads et une autre taille pour les iPhones et les iPod touchées?
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
{
// The device is an iPad running iOS 3.2 or later.
}
else
{
// The device is an iPhone or iPod touch.
}
if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone)
et
if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
La macros ui_user_interface_idiom () fonctionne également sur les versions iOS plus anciennes telles que iOS 3.0 sans s'écraser.
UI_USER_INTERFACE_IDIOM()
est la meilleure solution dans votre cas puisque votre application est universelle. Mais si vous exécutez une application iPhone sur iPad que UI_USER_INTERFACE_IDIOM()
retournera UIUserInterfaceIdiomPhone
, quel que soit le périphérique. Pour de telles fins que cela, vous pouvez utiliser le UIDevice.model
biens:
if ([[UIDevice currentDevice].model rangeOfString:@"iPad"].location != NSNotFound) {
//Device is iPad
}
In Swift 2.x Vous pouvez utiliser les égalités suivantes pour déterminer le type de périphérique:
UIDevice.currentDevice().userInterfaceIdiom == .Phone
ou
UIDevice.currentDevice().userInterfaceIdiom == .Pad
In Swift 3 pour les nouvelles personnes qui arrivent ici.
if UIDevice.current.userInterfaceIdiom == .pad { \\ Available Idioms - .pad, .phone, .tv, .carPlay, .unspecified \\ Implement your awesome logic here }
Utilisez la classe UIScreen
pour déterminer le cadre de l'application.
CGRect usableSpace = [[UIScreen mainScreen] applicationFrame];
Le rectangle retourné est la taille de l'écran moins la barre d'état. N'utilisez pas les idiomes de l'interface utilisateur pour déterminer l'espace disponible car ils ne sont pas futurs.
Au fait, UIViewController
peut redimensionner automatiquement les vues de contenu (y compris les vues de défilement), ainsi que de vous fournir d'autres goodies, telles que la rotation automatique. Considérez-le s'il est approprié dans votre situation.
si vous utilisez Swift,
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiom.Pad)
{
// device is ipad
}
else
{
//device is iPhone
}
Vous pouvez également vérifier l'uiuserinterfaceidiom et choisir l'appareil que vous souhaitez uIuserInterfaceidiom.pad ou uiuserinterfaceidiom.phone ou uiuserinterfaceidiom.tv ou uiuserinterfaceidiom.carplay.