我相信有更好,更合适的方法来做到这一点。但是现在我正在使用UIScreen.main.bounds来检测是否正在处理iPhone
X(812高)。顺便说一句,这个特定的应用程序仅适用于风景。这就是我在此功能中要为幻灯片视图创建幻灯片的地方:
func setupSlideViews(slideView: [SlideView]) {
let screenSize = UIScreen.main.bounds
var frame: CGRect!
if screenSize.width == 812 {
frame = scrollView.frame
} else {
frame = view.frame
}
scrollView.frame = frame
scrollView.contentSize = CGSize(width: frame.width * CGFloat(slideViews.count), height: frame.height)
for (i, slideView) in slideViews.enumerated() {
slideView.frame = CGRect(x: frame.width * CGFloat(i), y: 0, width: frame.width, height: frame.height)
scrollView.addSubview(slideView)
}
}
但是,如何检查模型?
如果您需要检测设备是否为iPhoneX,请不要使用bounds
,这取决于设备的方向。因此,如果用户以纵向模式打开您的应用程序,它将失败。您可以使用设备属性nativeBounds
,该属性在旋转时不会改变。
在iOS
8及更高版本中,屏幕的bounds属性考虑了屏幕的界面方向。此行为意味着,纵向设备的边界可能与横向设备的边界不同。依赖屏幕尺寸的应用程序可以将fixedCoordinateSpace属性中的对象用作他们必须进行的任何计算的固定参考点。(在iOS
8之前,屏幕的边界矩形始终反映屏幕相对于纵向向上方向的尺寸。将设备旋转为横向或上下方向不会改变边界。)
extension UIDevice {
var iPhoneX: Bool {
return UIScreen.main.nativeBounds.height == 2436
}
}
用法
if UIDevice.current.iPhoneX {
print("This device is a iPhoneX")
}
问题内容: 我想知道是否有可能检测浏览器是否在iOS上运行,这与使用Modernizr进行功能检测的方式类似(尽管这显然是设备检测而非功能检测)。 通常,我宁愿使用功能检测,但我需要根据该问题确定设备是否为iOS,因为它们处理视频的方式YouTube API无法在iPad / iPhone/非Flash设备上使用 问题答案: 我不喜欢User Agent嗅探,但是这是你的处理方式: 另一种方法是依
我对SO做了一些研究,但类似的问题 我网站的目的是,如果用户在手机(手机或平板电脑)和wifi上,播放视频剪辑;如果用户使用手机而不是wifi,则播放视频片段;如果用户不在手机上,则播放视频剪辑。 不同行为的原因是避免由于视频剪辑的尺寸相对较大而可能给用户带来附加费。这与速度无关 - 如今LTE与wifi的速度差异可能很小;它更多的是担心用户在没有wifi连接的情况下为数据使用付费。 所以我的问题
本文向大家介绍检测iOS设备是否越狱的方法,包括了检测iOS设备是否越狱的方法的使用技巧和注意事项,需要的朋友参考一下 在应用开发过程中,我们希望知道设备是否越狱,正以什么权限运行程序,好对应采取一些防御和安全提示措施。 首先,你可以尝试使用NSFileManager判断设备是否安装了如下越狱常用工具: 但是不要写成BOOL开关方法,给攻击者直接锁定目标hook绕过的机会 攻击者可能会改变这些工具
我创建了一个android照片应用程序,并在其中添加了使用intent在facebook、twitter、instagram上共享图像的功能,但当我共享图像时,如果设备上未安装facebook、twitter、instagram应用程序,该应用程序将崩溃。
问题内容: 在Objective-C中,我们可以知道是否正在使用宏为设备或模拟器构建应用程序: 这些是编译时宏,在运行时不可用。 如何在Swift中实现相同目标? 问题答案: 尽管此答案可能有效,但建议进行静态检查的解决方案(如几位Apple工程师所阐明的那样)是定义一个针对iOS模拟器的自定义编译器标志。 原始答案 如果您需要静态检查(例如不需要运行时if/else),则无法直接检测到模拟器,但