我的iOS应用程序使用自定义高度UINavigationBar导致新iPhone X上出现一些问题.
如果应用程序在iPhone X上运行,是否有人已经知道如何以编程方式(在Objective-C中)进行可靠检测?
编辑:
当然,检查屏幕的大小是可能的,但是,我想知道是否有一些"内置"方法,如TARGET_OS_IPHONE检测iOS ...
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone) {
CGSize screenSize = [[UIScreen mainScreen] bounds].size;
if (screenSize.height == 812)
NSLog(@"iPhone X");
}
Run Code Online (Sandbox Code Playgroud)
编辑2:
我不认为,我的问题是链接问题的重复.当然,有一些方法可以"测量"当前设备的不同属性,并使用结果来决定使用哪个设备.然而,这不是我的问题的实际问题,因为我在第一次编辑时试图强调.
实际的问题是:"是否可以直接检测当前设备是否是iPhone X(例如,通过某些SDK功能)或者我是否必须使用间接测量"?
到目前为止给出的答案,我认为答案是"不,没有直接的方法.测量是要走的路".
任何人在UITabBar组件周围遇到iPhone X模拟器问题?
我似乎将图标和标题呈现在彼此之上,我不确定我是否遗漏了任何东西,我也在iPhone 8模拟器中运行它,以及一个看起来很好的实际设备,如图所示故事板.
iPhone X:
iPhone 8
在iPhone X模拟器(GM Seed)中运行我的应用程序我注意到两个奇怪的效果:
有谁知道这里发生了什么以及如何解决这个问题?我在Interface Builder中找不到任何新设置.
我昨天在Xcode 9.0(9A235)的iPhone X模拟器上测试了我的基于Cordova的应用程序,它看起来不太好.首先,不是填满整个屏幕区域,而是在app内容的上方和下方有一个黑色区域.更糟糕的是,应用内容和黑色之间是两个白条.
cordova-plugin-wkwebview-engine使用WKWebView(不是UIWebView)添加所以Cordova渲染可以修复白条.我的应用程序没有从UIWebView迁移到WKWebView,因为在使用cordova-plugin-wkwebview-engine从Inapp购买托管内容下载的图像到HTML5画布时出现性能和内存泄漏问题(file://由于WKWebView中的安全限制,Webview无法直接访问)必须通过加载图像数据cordova-plugin-file.
这些屏幕截图显示了一个在<body> 上设置了蓝色背景的测试应用.在UIWebView的上方和下方,您可以看到白条,但不能看到WKWebView:

与充满整个屏幕区域的原生应用相比,Cordova Webviews都展示了黑色区域:

由于我不使用故事板来创建我的视图,我想知道是否有编程方式的"使用安全区域指南"选项或类似的东西.
我试图将我的观点固定在
view.safeAreaLayoutGuide
但它们仍然与iPhone X模拟器中的顶级重叠.
我开始为iPhone X调整我的应用程序,并在Interface Builder中发现了一个问题.根据官方Apple视频,安全区域布局指南应该向后兼容.我发现它在故事板中运行得很好.
但在我的XIB文件中,iOS 10中不遵守安全区域布局指南.
它们适用于新的操作系统版本,但iOS 10设备似乎只是假设安全区域距离为零(忽略状态栏大小).
我错过了任何必要的配置吗?这是一个Xcode错误,如果是这样,任何已知的解决方法?
以下是测试项目中的问题的屏幕截图(左侧iOS 10,右侧iOS 11):
与Apple的新设备相对应的CSS媒体查询是什么?我需要设置body's background-color来改变X的安全区域背景颜色.
我正在更新我的应用程序,以适应iPhone X.所有视图现在工作正常,除了一个.我有一个视图控制器,提供覆盖整个屏幕的自定义UIView.在我使用UIScreen.main.bounds之前,在完成所有布局之前找出视图的大小(我需要它来为collectionView放置正确的itemSize).我想现在我可以做一些类似于
UIScreen.main.bounds.size.height - safeAreaInsets.bottom获得正确可用尺寸的东西.问题是,safeAreaInsets在iPhone X(模拟器)上尝试返回(0,0,0,0).有任何想法吗?在其他视图中,我得到了safeAreaInsets的正确数字.
谢谢!