UI_USER_INTERFACE_IDIOM()在iPhone和iPad之间检测到的Swift 相当于什么?
UI_USER_INTERFACE_IDIOM()
Use of unresolved identifier在Swift中编译时出现错误。
Use of unresolved identifier
使用Swift时,您可以使用enum UIUserInterfaceIdiom,定义为:
enum
UIUserInterfaceIdiom
enum UIUserInterfaceIdiom : Int { case unspecified case phone // iPhone and iPod touch style UI case pad // iPad style UI (also includes macOS Catalyst) }
因此,您可以将其用作:
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 (or macOS Catalyst) 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]直接使用。
[UIDevice userInterfaceIdiom]