什么是等价的UI_USER_INTERFACE_IDIOM()在Swift检测之间的iPhone和iPad?
我得到一个使用未解决的标识符错误时,在Swift编译。
什么是等价的UI_USER_INTERFACE_IDIOM()在Swift检测之间的iPhone和iPad?
我得到一个使用未解决的标识符错误时,在Swift编译。
当前回答
试试这个检查当前设备是iPhone还是iPad:
斯威夫特5
struct Device {
static let IS_IPAD = UIDevice.current.userInterfaceIdiom == .pad
static let IS_IPHONE = UIDevice.current.userInterfaceIdiom == .phone
}
Use:
if(Device.IS_IPHONE){
// device is iPhone
}if(Device.IS_IPAD){
// device is iPad (or a Mac running under macOS Catalyst)
}else{
// other
}
其他回答
Swift 4.2 - 5.1扩展
public extension UIDevice {
class var isPhone: Bool {
return UIDevice.current.userInterfaceIdiom == .phone
}
class var isPad: Bool {
return UIDevice.current.userInterfaceIdiom == .pad
}
class var isTV: Bool {
return UIDevice.current.userInterfaceIdiom == .tv
}
class var isCarPlay: Bool {
return UIDevice.current.userInterfaceIdiom == .carPlay
}
}
使用
if UIDevice.isPad {
// Do something
}
供参考,我已经使用UI_USER_INTERFACE_IDIOM()为我的应用程序写在Swift。应用程序可以很好地使用XCode 6.3.1编译,没有任何警告,在模拟器(任何选择的设备)和我所有的真实设备(iPhone, iPad)上运行良好,iOS版本从7.1到8.3。
然而,这款应用在苹果评测者的设备上崩溃了(并被拒绝)。我花了几天时间才发现问题,并重新上传了几次到iTunes Connect。
现在我使用UIDevice.currentDevice()。取而代之的是userInterfaceIdiom,我的应用程序可以从这样的崩溃中幸存下来。
Swift 2.0 & iOS 7+ / iOS 8+ / iOS 9+
public class Helper {
public class var isIpad:Bool {
if #available(iOS 8.0, *) {
return UIScreen.mainScreen().traitCollection.userInterfaceIdiom == .Pad
} else {
return UIDevice.currentDevice().userInterfaceIdiom == .Pad
}
}
public class var isIphone:Bool {
if #available(iOS 8.0, *) {
return UIScreen.mainScreen().traitCollection.userInterfaceIdiom == .Phone
} else {
return UIDevice.currentDevice().userInterfaceIdiom == .Phone
}
}
}
使用:
if Helper.isIpad {
}
OR
guard Helper.isIpad else {
return
}
由于@user3378170
我是这样做的:
UIDevice.current.model
它显示了设备的名称。
检查是iPad还是iPhone:
if ( UIDevice.current.model.range(of: "iPad") != nil){
print("I AM IPAD")
} else {
print("I AM IPHONE")
}
如果你想检查当前设备是iPad还是iPhone,那么你可以使用这些代码行:
if(UIDevice.currentDevice().userInterfaceIdiom == .Pad){
}else if(UIDevice.currentDevice().userInterfaceIdiom == .Phone){
}