2012-01-06 52 views
9

我想區分iPhone和iPad的控制器。如何在通用應用程序中區分iPhone和iPad?

 #ifdef __IPHONE_NA 
      { 

      UINavigationBar *ipadNavBar = [[UINavigationBar alloc] initWithFrame: CGRectMake(0.0f, 0.0f, 768.0f, 50.0f)]; 
      [[self view] addSubview: ipadNavBar]; 

      UINavigationItem *ipadNavItem = [[UINavigationItem alloc] initWithTitle: @"EMPLOYEE"]; 
      [ipadNavBar pushNavigationItem:ipadNavItem animated:NO]; 
      } 
    else 
     { 

     UINavigationBar *ipadNavBar = [[UINavigationBar alloc] initWithFrame: CGRectMake(0.0f, 0.0f, 360.0f, 45.0f)]; 
     [[self view] addSubview: ipadNavBar]; 



UINavigationItem *ipadNavItem = [[UINavigationItem alloc] initWithTitle: @"EMPLOYEE"]; 
    [ipadNavBar pushNavigationItem:ipadNavItem animated:NO]; 
    } 

如果說錯誤未終止的#ifdef

是這種做法是否正確?

回答

17

您可以使用常量已經存在的:

if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone) 
{ 
    // Some code for iPhone 
} 
else if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) 
{ 
    // Some code for iPad 
} 

當然,你不會需要else if聲明,你可以只使用else但我只是用它說明了差異常數可用。

你可以找到更多here(看看UI_USER_INTERFACE_IDIOM部分)。

+0

thanks Crazy Chimp! – user905582 2012-01-07 23:54:02

+0

沒問題 - 很高興我能幫上忙! – 2012-01-08 11:21:38

+0

應用程序需要通用才能執行iPad程序塊。 – 2014-11-14 00:08:10

2
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) 
     NSLog(@"iPad Idiom"); 
    else 
     NSLog(@"iPhone Idiom"); 
0
if (UIDevice.CurrentDevice.UserInterfaceIdiom == UIUserInterfaceIdiom.Phone) { 

    Console.WriteLine("Phone"); 

} else if (UIDevice.CurrentDevice.UserInterfaceIdiom == UIUserInterfaceIdiom.Pad) { 

    Console.WriteLine("Pad"); 

} 
+3

良好的答案伴隨代碼示例以及未來讀者的解釋。當問這個問題的人可能會理解你的答案時,解釋你如何到達它會幫助無數其他人。 – 2014-08-04 12:51:59

相關問題