iOS11以及iPhone X遇到的相关问题
還沒有開始適配之前,就已經聽身邊的程序猿伙伴在為iPhone X的劉海和HomeBar的存在而紛紛吐槽了。說的我都有些怕怕,膽子小,哈哈哈。下面針對在整理過程中發現的適配注意點進行簡單總結。
一、iOS11
1、iOS11新增版本判斷API
2、MJRefresh上拉刷新死循環
3、訪問相冊權限變更
4、UITableView相關適配
二、iPhone X
1、iPhone X尺寸
2、iPhone X上下顯示黑條問題
3、導航欄適配
4、安全區域問題
5、上傳警告問題
1.1、iOS11新增版本判斷API
iOS11版本現在有了簡單的API,OC也開始支持swfit的@available語法,就可以不用再手寫判斷iOS版本了。
if (@available(iOS 11.0, *)) {
// 版本適配
}
1.2、MJRefresh上拉刷新死循環
self.tableView.estimatedRowHeight=150.0f;
150這個數值是你cell的平均高度,如果estimatedRowHeight設置非常小,MJRefresh的KVO會監聽錯誤的contentoffset,造成不停進行上拉加載操作。
1.3、訪問相冊權限變更
www.jianshu.com/p/cd0f814a7ce9
1.4、UITableView相關適配
www.jianshu.com/p/73394f7518c8
2.1、iPhone X尺寸
2.2、iPhone X上下顯示黑條問題
運行Xcode9.0的iPhoneX模擬器, APP在iPhoneX屏幕沒填充滿,上下有黑色區域,這是因為app之前未用LaunchScreen.Storyboard作為啟動頁面,可以使用LaunchScreen來當做入場頁面,這樣APP才會自動適配為iPhoneX的大小。我的項目中是用Assets中的LaunchImage, 這樣就可以修改Assets中的LaunchImage,添加iPhoneX的Launch圖(1125*2436)
適配啟動頁入口
2.3、導航欄適配
導航欄新增了一種大標題樣式,默認設置是不開啟,所以不需要修改。
iOS 11以前,導航欄的高度是64,其中狀態欄statusBar的高度是20,底部tabbar的高度是49。
iOS 11之后,iPhoneX的導航欄的高度是88,其中狀態欄的statusBar的高度變成了44, 底部的tabbar變成了83。
iPhoneX的底部增加了虛擬Home區,由于安全區域的原因默認tabBar的高度由49變為83,增高了34,所以自定義的底部TabBar也需要需改其適配方案。
目前我們項目沒有自定義底部TabBar, 則先不考慮吧, 先來考慮關于navi 在 iPhone X 上是88的問題.
目前沒發現有iPhoneX的機型判斷API,建議使用size來做代替判斷。
#define kStatusBarHeight [[UIApplication sharedApplication] statusBarFrame].size.height
#define kNavBarHeight 44.0
#define kTabBarHeight ([[UIApplication sharedApplication] statusBarFrame].size.height>20?83:49)//tabBar高
#define kTopHeight (kStatusBarHeight + kNavBarHeight)//導航欄高
//判斷iPhoneX
#define isiPhone (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone)
#define iPhoneX [[UIScreen mainScreen] bounds].size.width >= 375.0f && [[UIScreen mainScreen] bounds].size.height >= 812.0f && isiPhone
2.4、安全區域問題
iOS 11之前, automaticallyAdjustsScrollViewInsets經常被設置成NO,由開發者去控制處理留白和坐標問題, 但是11+automaticallyAdjustsScrollViewInsets = NO這句代碼失效。
iOS 11后,把這個automaticallyAdjustsScrollViewInsets廢棄,新增了contentInsetAdjustmentBehavior,這個屬性是個枚舉類型值,我們只需要把其設置成never就行了
解決tableView偏移88的問題,? 我們可以對對 tableView 進行如下設置:
if (@available(iOS 11.0, *)) {
self.tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever;
} else {
self.automaticallyAdjustsScrollViewInsets = NO;
}
2.5、上傳警告問題
打好ipa包之后,收到蘋果方的郵件是下面這個樣子的。
更新適配版本時 iPhone X 的啟動圖適配加上了, 千萬別忘了也要傳 Icon. 否則就會有上傳版本時會有提示警告滴~
9月份上傳的時候, 沒有1024*1024的營銷圖標只是有警告, 現在上傳的時候也是有警告的, 只不過現在提交審核的時候直接不能提交審核!
作者:肉肉要次肉
鏈接:http://www.jianshu.com/p/72a5519a371b
來源:簡書
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。
順便在此提供幾個關于iOS11適配博客
有關iOS11和iPhoneX的適配問題
適配iOS11&iPhoneX的一些坑
iPhone X的簡單適配
總結
以上是生活随笔為你收集整理的iOS11以及iPhone X遇到的相关问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python 正则表达式整理
- 下一篇: 小程序转uniapp——disabled