web-dev-qa-db-ja.com

if(デバイス== iPad)、if(デバイス== iPhone)

だから私はユニバーサルアプリを持っていて、UIScrollViewのコンテンツサイズを設定しています。当然ながら、コンテンツサイズはiPhoneとiPadでは異なります。 iPadに特定のサイズを、iPhoneおよびiPod touchに別のサイズを設定するにはどうすればよいですか?

29
Peter Kazazes
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.
}
92
Peter Kazazes
if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone)

そして

if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)

マクロUI_USER_INTERFACE_IDIOM()は、クラッシュすることなく、iOS 3.0などの古いiOSバージョンでも機能します。

14
JustSid

アプリはユニバーサルなので、UI_USER_INTERFACE_IDIOM()が最適なソリューションです。ただし、iPadでiPhoneアプリを実行している場合、デバイスに関係なく、UI_USER_INTERFACE_IDIOM()UIUserInterfaceIdiomPhoneを返します。そのような目的のために、UIDevice.modelプロパティ:

if ([[UIDevice currentDevice].model rangeOfString:@"iPad"].location != NSNotFound) {

    //Device is iPad
}
5

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 }

3
Kunal Verma

IDevice クラスは、デバイスについて知る必要があるすべてを伝えます。たとえば model プロパティは、デバイスのモデルを示します。これを使用して、現在のデバイスに使用するビューを決定できます。

2
csano

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にするデバイスを選択することもできます。

0
Raja Reddy