だから私はユニバーサルアプリを持っていて、UIScrollView
のコンテンツサイズを設定しています。当然ながら、コンテンツサイズはiPhoneとiPadでは異なります。 iPadに特定のサイズを、iPhoneおよびiPod touchに別のサイズを設定するにはどうすればよいですか?
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)
そして
if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
マクロUI_USER_INTERFACE_IDIOM()は、クラッシュすることなく、iOS 3.0などの古いiOSバージョンでも機能します。
アプリはユニバーサルなので、UI_USER_INTERFACE_IDIOM()
が最適なソリューションです。ただし、iPadでiPhoneアプリを実行している場合、デバイスに関係なく、UI_USER_INTERFACE_IDIOM()
はUIUserInterfaceIdiomPhone
を返します。そのような目的のために、UIDevice.model
プロパティ:
if ([[UIDevice currentDevice].model rangeOfString:@"iPad"].location != NSNotFound) {
//Device is iPad
}
Swift 2.xでは、次の等式を使用してデバイスの種類を判別できます。
UIDevice.currentDevice().userInterfaceIdiom == .Phone
または
UIDevice.currentDevice().userInterfaceIdiom == .Pad
Swift 3でここに来る新しい人々のために。
if UIDevice.current.userInterfaceIdiom == .pad { \\ Available Idioms - .pad, .phone, .tv, .carPlay, .unspecified \\ Implement your awesome logic here }
UIScreen
クラスを使用して、アプリケーションのフレームを判別します。
CGRect usableSpace = [[UIScreen mainScreen] applicationFrame];
返される四角形は、画面のサイズからステータスバーを引いたものです。将来性がないため、利用可能なスペースを決定するためにUIイディオムを使用しないでください。
ちなみに、UIViewController
は、コンテンツビュー(スクロールビューを含む)のサイズを自動的に変更するだけでなく、自動回転などの他の便利な機能も提供します。状況に応じて検討してください。
swiftを使用している場合、
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiom.Pad)
{
// device is ipad
}
else
{
//device is iPhone
}
UIUSerInterfaceIdiomを確認して、UIUserInterfaceIdiom.PadまたはUIUserInterfaceIdiom.PhoneまたはUIUserInterfaceIdiom.TVまたはUIUserInterfaceIdiom.CarPlayにするデバイスを選択することもできます。