当前位置: 首页 > 面试题库 >

在Swift中使用UI_USER_INTERFACE_IDIOM()检测当前设备

端木皓君
2023-03-14
问题内容

UI_USER_INTERFACE_IDIOM()在iPhone和iPad之间检测到的Swift 相当于什么?

Use of unresolved identifier在Swift中编译时出现错误。


问题答案:

使用Swift时,您可以使用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]直接使用。



 类似资料:
  • 我想做一个类似宏的对象,可以检测到它在当前范围内的使用,在这样的情况下表现不同。例如,考虑以下代码片段 有没有可能在C++中用宏或任何其他语言元素来实现这一点? 对于那些好奇为什么我需要这样做的人:我想要制作一个易于复制、可粘贴的宏FOO,我可以将它放在任何地方,以便在两次出现之间花费时间在代码片段上。 例如:

  • 问题内容: 触摸a后,您将如何检测并执行操作?这是我到目前为止的代码: 问题答案: 您可以使用Interface Builder 放入内部,也可以放入代码(根据需要),我更喜欢第一个。然后,你可以把一个和处理你里面的水龙头,别忘了设置,以在Interface Builder或代码。 希望对您有所帮助。

  • 我想知道是否可以通过spotify web api从用户当前的活动设备中检测出用户正在听的歌曲。 谢谢。

  • 问题内容: 我相信有更好,更合适的方法来做到这一点。但是现在我正在使用UIScreen.main.bounds来检测是否正在处理iPhone X(812高)。顺便说一句,这个特定的应用程序仅适用于风景。这就是我在此功能中要为幻灯片视图创建幻灯片的地方: 但是,如何检查模型? 问题答案: 如果您需要检测设备是否为iPhoneX,请不要使用,这取决于设备的方向。因此,如果用户以纵向模式打开您的应用程序

  • 问题内容: 在Javascript / jQuery中,如何检测客户端设备是否有鼠标? 我有一个网站,当用户将鼠标悬停在某个项目上时,该网站会在信息面板上向上滑动。我正在使用jQuery.hoverIntent来检测悬停,但这显然不适用于iPhone/ iPad / Android等触摸屏设备。因此,在这些设备上,我想还原为点按以显示信息面板。 问题答案: +1,两者兼而有之。另一种方法是使用CS

  • 在Deave文档中,他们给出了测试控制器时如何访问当前用户的提示: https://github.com/plataformatec/devise/wiki/How-To:-测试控制器-带导轨-3-和-4-(和RSpec) 但是,在进行特性测试时会发生什么情况?我正在尝试测试我的一个控制器的create方法,在该控制器中使用了current_用户变量。 问题是Deviate中建议的宏使用@requ