3 回答

TA貢獻1772條經(jīng)驗 獲得超5個贊
使用Swift時,您可以使用enum UIUserInterfaceIdiom,定義為:
enum UIUserInterfaceIdiom : Int {
case unspecified
case phone // iPhone and iPod touch style UI
case pad // iPad style UI
}
因此,您可以將其用作:
UIDevice.current.userInterfaceIdiom == .pad
UIDevice.current.userInterfaceIdiom == .phone
UIDevice.current.userInterfaceIdiom == .unspecified
或使用Switch語句:
switch UIDevice.current.userInterfaceIdiom {
case .phone:
// It's an iPhone
case .pad:
// It's an iPad
case .unspecified:
// Uh, oh! What could it be?
}
UI_USER_INTERFACE_IDIOM() 是一個Objective-C宏,定義為:
#define UI_USER_INTERFACE_IDIOM() \ ([[UIDevice currentDevice] respondsToSelector:@selector(userInterfaceIdiom)] ? \ [[UIDevice currentDevice] userInterfaceIdiom] : \ UIUserInterfaceIdiomPhone)
另外,請注意,即使在使用Objective-C時,UI_USER_INTERFACE_IDIOM()也僅在定位iOS 3.2及更低版本時才需要該宏。部署到iOS 3.2及更高版本時,可以[UIDevice userInterfaceIdiom]直接使用。

TA貢獻1813條經(jīng)驗 獲得超2個贊
Swift 2.0和iOS 9和Xcode 7.1
// 1. request an UITraitCollection instance
let deviceIdiom = UIScreen.mainScreen().traitCollection.userInterfaceIdiom
// 2. check the idiom
switch (deviceIdiom) {
case .Pad:
print("iPad style UI")
case .Phone:
print("iPhone and iPod touch style UI")
case .TV:
print("tvOS style UI")
default:
print("Unspecified UI idiom")
}
Swift 3.0和Swift 4.0
// 1. request an UITraitCollection instance
let deviceIdiom = UIScreen.main.traitCollection.userInterfaceIdiom
// 2. check the idiom
switch (deviceIdiom) {
case .pad:
print("iPad style UI")
case .phone:
print("iPhone and iPod touch style UI")
case .tv:
print("tvOS style UI")
default:
print("Unspecified UI idiom")
}
使用UITraitCollection。通過UITraitEnvironment協(xié)議的traitCollection屬性公開了iOS trait環(huán)境。以下類別采用了此協(xié)議:
UIScreen
UIWindow
UIViewController
UIPresentationController
UIView
- 3 回答
- 0 關注
- 1261 瀏覽
添加回答
舉報