如果(设备== iPad),如果(设备== iPhone)

所以我有一个通用的应用程序,我设置了一个UIScrollView的内容大小。 iPhone和iPad上的内容大小显然不同。 我怎样才能为iPad设置一定的尺寸,为iPhone和iPod设置另一个尺寸?

 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) 

macrosUI_USER_INTERFACE_IDIOM()也适用于iOS 3.0等较早的iOS版本,而不会崩溃。

UI_USER_INTERFACE_IDIOM()是最好的解决scheme,因为你的应用程序是通用的。 但是,如果您在iPad上运行iPhone应用程序,则无论UI_USER_INTERFACE_IDIOM() UIUserInterfaceIdiomPhone ,都将返回UIUserInterfaceIdiomPhone 。 为了这样的目的,你可以使用UIDevice.model属性:

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

在Swift 2.x中,您可以使用下面的等式来确定设备的types:

UIDevice.currentDevice().userInterfaceIdiom == .Phone

要么

UIDevice.currentDevice().userInterfaceIdiom == .Pad

在斯威夫特3新来的人来到这里。

if UIDevice.current.userInterfaceIdiom == .pad { \\ Available Idioms - .pad, .phone, .tv, .carPlay, .unspecified \\ Implement your awesome logic here }

UIDevice类会告诉你一切你需要知道的设备。 例如, 模型属性会告诉你设备的模型。 您可以使用它来确定当前设备使用哪个视图。

使用UIScreen类来确定应用程序的框架。

 CGRect usableSpace = [[UIScreen mainScreen] applicationFrame]; 

返回的矩形是屏幕的大小减去状态栏。 不要使用UI成语来确定可用空间,因为它们不是面向未来的。

顺便说一句, UIViewController可以自动调整内容视图(包括滚动视图),并为您提供其他好处,例如自动旋转。 考虑一下,如果在你的情况下是适当的。

如果你正在使用swift,

  if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiom.Pad) { // device is ipad } else { //device is iPhone } 

您也可以检查UIUSerInterfaceIdiom并select您想要UIUserInterfaceIdiom.Pad或UIUserInterfaceIdiom.Phone或UIUserInterfaceIdiom.TV或UIUserInterfaceIdiom.CarPlay的设备