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
}