traitCollection.userInterfaceIdiom返回-1

tay*_*IFT 0 xcode ios autolayout ios8

我想检查iPhone或iPad是否使用这些代码

if traitCollection.userInterfaceIdiom == UIUserInterfaceIdiom.Phone {
    println("iPhone")
} else {
    println("iPad")
}
Run Code Online (Sandbox Code Playgroud)

我尝试使用iPhone模拟器和我的iPhone,但它打印了"iPad"

然后我试着打印"traitCollection.userInterfaceIdiom"

println(traitCollection.userInterfaceIdiom.rawValue)
Run Code Online (Sandbox Code Playgroud)

它打印"-1"而不是"0"(iPhone)或"1"(iPad)

我不知道问题出在哪里,我一直在搜索谷歌,但还没有发现这里发生了什么.

mat*_*att 6

你说得对.我将您的代码直接复制并粘贴到应用程序中,就像您拥有它一样:

if traitCollection.userInterfaceIdiom == UIUserInterfaceIdiom.Phone {
    println("iPhone")
} else {
    println("iPad")
}
Run Code Online (Sandbox Code Playgroud)

在iPhone模拟器中,我iPhone在控制台中看到.在iPad模拟器中,我iPad在控制台中看到.

您可能只是在错误的时间运行此代码.请记住,除非您的视图位于界面,否则不会设置您的特征集合.如果你想在其他时间检查,请询问UIDevice.currentDevice(),而不是特质收集userInterfaceIdiom.