ios 11 適配的問題

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;

}

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容