2

私はペン先を使わずにアプリを書こうとしています。プログラムで行うことはすべてです。

問題は、iPadiPhoneの両方をどのようにサポートするのかということです。明らかに、私はそれを行うことはできません

if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad) {
    // load iPad nib
} else {
    // load iPhone nib
}

2つのViewControllerを作成すると、IBAction冗長になります。

なにか提案を?

4

4 に答える 4

3

おそらく、デバイスの種類を把握してから、デバイスapplicationDidFinishLaunching ごとに個別のコントローラーをロードする必要があります。しかし、すべてのデバイスに対して 1 つの実装だけが必要な場合は、次のようにチェックします。

 if(UI_USER_INTERFACE_IDIOM()==UIUserInterfaceIdiomPad)
{
    //do some iPad stuff
}
else
{
    CGFloat screenH = [UIScreen mainScreen].bounds.size.height;

    if([UIScreen mainScreen].scale == 2.f && screenH == 568.0f)
    {
        //do iPhone 5 stuff
    }
    else
    {
        //do iPhone 4S and iPhone 4 stuff

        //the dimensions are the same however, if you want to do iPhone 4S specific stuff
        // you'll need to do additional checks against video resolution or other differences etc
    }
}      
于 2013-03-14T05:44:44.233 に答える
0
CGFloat height = [UIscreen mainScreen].bounds.size.height;

if(height==568.00 || height == 480.0)
{
//For iphone 5 and iphone 4

}
else
{
 //For ipad
}
于 2013-03-14T05:16:09.603 に答える
0

nib を使用していない場合は、iPhone と iPad 用に 2 つのビュー コントローラーを作成する必要はありません。静的な値に依存しないことを忘れないでください。つまり、そのようなものに従って計算を行う必要がありますself.view.bounds(ビュー/サブビューを作成することを意味します)。次に、iPadでのみサポートする特定の機能がチェックを行う場合

if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad)

1 つの View Controller ですべての作業が完了します。

于 2013-03-14T05:47:34.083 に答える
0

このコードを AppDelegate で使用できます

- (BOOL) isPad() 
{   

    if(UI_USER_INTERFACE_IDIOM)
    {  
        return (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad);
    }
   else
   {
        return NO;
   }

}

このリンクは、イディオムhttp://developer.apple.com/library/ios/#documentation/uikit/reference/UIKitFunctionReference/Reference/reference.html#//apple_ref/c/macro/UI_USER_INTERFACE_IDIOMに関する情報を提供します

また

画面の高さと幅をチェックして、iPhoneかiPadかを知ることができます

CGRect screen = [[UIScreen mainScreen] bounds];
CGFloat width = CGRectGetWidth(screen);
CGFloat height = CGRectGetHeight(screen);
于 2013-03-14T05:37:57.507 に答える