Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/110.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 如果(设备==iPad),如果(设备==iPhone)_Objective C_Ios_Xcode_Uiscrollview - Fatal编程技术网

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

Objective c 如果(设备==iPad),如果(设备==iPhone),objective-c,ios,xcode,uiscrollview,Objective C,Ios,Xcode,Uiscrollview,因此,我有一个通用应用程序,我正在设置UIScrollView的内容大小。显然,iPhone和iPad上的内容大小将有所不同。如何为iPad设置特定尺寸,为iPhone和iPod Touch设置另一个尺寸?本课程将告诉您需要了解的有关该设备的所有信息。例如,属性将告诉您设备的型号。您可以使用此选项确定当前设备使用哪个视图 if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) { // The device is an iPa

因此,我有一个通用应用程序,我正在设置
UIScrollView
的内容大小。显然,iPhone和iPad上的内容大小将有所不同。如何为iPad设置特定尺寸,为iPhone和iPod Touch设置另一个尺寸?

本课程将告诉您需要了解的有关该设备的所有信息。例如,属性将告诉您设备的型号。您可以使用此选项确定当前设备使用哪个视图

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.
}


宏UI\u USER\u INTERFACE\u IDIOM()也适用于较旧的iOS版本,如iOS 3.0,而不会崩溃。

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

CGRect usableSpace = [[UIScreen mainScreen] applicationFrame];
返回的矩形是屏幕大小减去状态栏。不要使用UI习惯用法来确定可用空间,因为它们不是未来的证明


顺便说一下,
UIViewController
可以自动调整内容视图(包括滚动视图)的大小,还可以为您提供其他功能,如自动旋转。如果在你的情况下是合适的,考虑它。<>代码> uiuSurl接口>(或)代码>在你的情况下是最好的解决方案,因为你的应用程序是通用的。但是,如果您在iPad上运行iPhone应用程序,则无论使用何种设备,
UI\u USER\u INTERFACE\u IDIOM()
都会返回
UIUserInterfaceIdiomPhone
。为此,您可以使用
UIDevice.model
属性:

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

    //Device is iPad
}

如果您使用的是swift

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

您还可以检查UIUSerInterfaceIdiom并选择要使用UIUSerInterfaceIdiom.Pad或UIUSerInterfaceIdiom.Phone或UIUSerInterfaceIdiom.TV或UIUSerInterfaceIdiom.CarPlay的设备。在Swift 2.x中,您可以使用以下等式来确定设备的类型:

UIDevice.currentDevice().userInterfaceIdiom==.Phone

UIDevice.currentDevice().userInterfaceIdiom==.Pad

在Swift 3为新来这里的人

如果UIDevice.current.userInterfaceIdiom=.pad{
\\可用惯用语-.pad、.phone、.tv、.carPlay、.unspecified
\\在这里实现你令人敬畏的逻辑

}

不建议使用model属性,因为它不是未来的证明。这是我第一次听说这个。你能给我一个链接吗?如果是这样的话,我会删除我的答案。事实上,我是在WWDC关于让iOS应用成为未来证明的会议上听到的。使用“模型”属性可以得到一个字符串。如果苹果发布了一款新的iOS设备,该设备与iPhone类似,但有另一个名称,比如“iPhone nano”,那么该应用程序将无法正常运行。我建议在这种情况下使用UIScreen的applicationFrame属性。这类似于确定硬件功能:与其只在iPhone和iPad上启用陀螺仪,不如只在Core Motion这么说的情况下启用陀螺仪。如果一旦iPod touch或未来的设备也支持它,您就有问题了。;-)习语就是现在的样子,将来改变习语是微不足道的。它们比你的建议更清晰、更有意义,IMHO。@Inspire48:问题是:如何正确调整滚动视图的大小?最简单的方法是使用系统提供的大小。因此,即使在一个还不知道的iDevice上,代码也不会中断,因为您不关心设备(习惯用法),而只关心显示器(调整滚动视图大小等)。显然,在许多其他情况下,使用这个成语是一个不错的选择这可能的重复是不现实的。据我所知,
UIDevice.model
属性等于Settings>About中的字符串,并且可以由用户更改。来源:@KennethJ谢谢你的警告,但我已经检查过了,我不这么认为。设置>常规>关于>型号为我的iPhone 5提供“MD297B/A”,不可编辑(菜单上只有“名称”字段可编辑)。你提供的API链接表明device.model是只读的,并且“iPhone”和“iPod touch”是可能的值。是的,你说得很对,我错误地看了“name”而不是“model”。我被纠正了。
if ([[UIDevice currentDevice].model rangeOfString:@"iPad"].location != NSNotFound) {

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