如何检查设备是否为iPad或iPhone无法工作

11

我正在更新一个应用程序,需要知道该应用程序是否在iPad上使用。

我查看了网上的代码,找到了下面的代码。我在Xcode中使用了iPad模拟器并运行了这两个if语句。但是每当我运行代码时,什么都没有发生(打印信息没有打印出来)。这个代码能够在模拟器上工作吗?还是我做错了什么?

当我检查它是否为UIUserInterfaceIdiom.phone时,打印语句就执行了,但我在模拟器上使用的是iPad。

if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiom.pad){
        print("This is an iPad")
        redoButton.layer.position.y -= 500



    }

if UIDevice.current.userInterfaceIdiom == .pad{
        print("iPad True")
    }

谢谢您


我认为第二个if语句应该用括号括起来。例如:if (UIDevice.current.userInterfaceIdiom == .pad) - Senura Dissanayake
你的应用程序是通用应用程序吗?你是否使用启动屏幕故事板? - rmaddy
1
@user7328702 不需要括号。Swift不需要括号。 - rmaddy
1
FYI - 你不应该根据设备类型来做布局决策,而是应该根据视图大小来做决策。 - rmaddy
5
就像我之前所说的,检查是否为iPad并不是正确的解决方案。您的应用程序需要在许多不同大小的iPhone上运行。如果将您的应用程序制作为通用应用程序,并完全支持iPad,那么您可以使用相同的方法来处理不同大小的屏幕。此外,在iPad上,您应该支持多任务处理,这意味着您的应用程序在运行时大小可能会发生变化。这就是为什么您需要基于视图大小而非设备类型做出决策的原因。 - rmaddy
显示剩余5条评论
3个回答

29
if UIDevice.current.userInterfaceIdiom == .pad {
    print("iPad")
}else{
    print("not iPad")
}

但您需要将您的应用程序制作成通用应用程序。


1
严格来说,你不一定需要将其制作成通用应用程序。这样做是个好主意,因为它会为iPad所有者提供更好的用户体验,但它所需要做的就是支持3.5英寸的手机。 - Paulw11

6
如果你想经常检查iPhone/iPad,使用以下类:
class Env {
  static var isIpad : Bool { return UIDevice.current.userInterfaceIdiom == .pad }
}

那么您可以像这样使用

if Env.isIpad { // Ipad } 
else { iphone } 

这并没有回答问题。 - rmaddy
先生@rmaddy。这只是对已接受答案的改进。如果OP想要经常检查,那我应该移除它吗? - Awais Fayyaz
回答应该首先回答问题,而不仅仅是另一个答案的代码方便。所以是的,我要么删除你的答案,要么更新它以完全回答问题并提供其他答案中没有的信息。 - rmaddy
1
是的,但无论如何这都是一种更干净的解决方案......我建议保留它。 - Cameron E

4

您可以使用:

if UIDevice.current.model == "iPad" {
        
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接