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