如果(设备== 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的设备