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.lxweimin.com/p/cd0f814a7ce9
1.4、UITableView相關適配
www.lxweimin.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來做代替判斷。
#definekStatusBarHeight[[UIApplicationsharedApplication] 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)
#defineiPhoneX[[UIScreenmainScreen] 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的營銷圖標只是有警告, 現在上傳的時候也是有警告的, 只不過現在提交審核的時候直接不能提交審核!
2.6、適配 iPhone X Push 過程中 TabBar 位置上移
解決問題
在UINavigationController的基類重寫pushViewController代理方法,在Push的時候修正一下TabBar的frame
- (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated
{
[super pushViewController:viewController animated:animated];
// 修改tabBra的frame
CGRect frame = self.tabBarController.tabBar.frame;
frame.origin.y = [UIScreen mainScreen].bounds.size.height - frame.size.height;
self.tabBarController.tabBar.frame = frame;
}