iOS 11適配

NB的iOS 11發(fā)布了,適配工作又來了??,本文主要記錄APP幾個需要適配的地方。

一:navigation bar

1、導(dǎo)航欄新增了一種大標(biāo)題樣式渔欢,默認(rèn)設(shè)置是不開啟,所以不需要修改瘟忱。

2奥额、titleView支持autolayout,這要求titleView必須是能夠自撐開的或?qū)崿F(xiàn)了- intrinsicContentSize访诱,簡書的搜索就變成下面這樣了

解決辦法比較簡單垫挨,這個搜索框?qū)?yīng)的view實現(xiàn)- intrinsicContentSize方法

- (CGSize)intrinsicContentSize {
    return UILayoutFittingExpandedSize;
}

二:安全區(qū)域適配

iOS 11中ViewControllerautomaticallyAdjustsScrollViewInsets屬性被廢棄了,導(dǎo)致了這兩個頁面出現(xiàn)了問題

這個頁面都隱藏了系統(tǒng)導(dǎo)航欄触菜,自定義導(dǎo)航欄九榔。

self.automaticallyAdjustsScrollViewInsets = NO;
self.extendedLayoutIncludesOpaqueBars = YES;
self.edgesForExtendedLayout = UIRectEdgeTop;

automaticallyAdjustsScrollViewInsets屬性被廢棄了,頂部就多了一定的inset涡相,關(guān)于安全區(qū)域適配哲泊,簡書上的這篇文章iOS 11 安全區(qū)域適配總結(jié)介紹得非常詳細(xì),請參考這篇文章催蝗。

我們采用了比較簡單的方法

if (@available(iOS 11.0, *)) {
    self.tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever;
} else {
    self.automaticallyAdjustsScrollViewInsets = NO;
}

三:導(dǎo)航欄返回按鈕


之前的代碼通過下面的方式自定義返回按鈕

UIImage *backButtonImage = [[UIImage imageNamed:@"icon_tabbar_back"]
    resizableImageWithCapInsets:UIEdgeInsetsMake(0, 18, 0, 0)];
[[UIBarButtonItem appearance] setBackButtonBackgroundImage:backButtonImage
                                                  forState:UIControlStateNormal
                                               barMetrics:UIBarMetricsDefault];
[[UIBarButtonItem appearance] setBackButtonTitlePositionAdjustment:UIOffsetMake(0, -60)
                                                    forBarMetrics:UIBarMetricsDefault];

iOS 11 中setBackButtonTitlePositionAdjustment:UIOffsetMake沒法把按鈕移出navigation bar切威。

解決方法是設(shè)置navigationControllerbackIndicatorImagebackIndicatorTransitionMaskImage

UIImage *backButtonImage = [[UIImage imageNamed:@"icon_tabbar_back"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
self.navigationBar.backIndicatorImage = backButtonImage;
self.navigationBar.backIndicatorTransitionMaskImage = backButtonImage;

四:tableview問題

右邊是正確樣式

iOS 11中如果不實現(xiàn)
-tableView: viewForFooterInSection:-tableView: viewForHeaderInSection:,那么-tableView: heightForHeaderInSection:- tableView: heightForFooterInSection:不會被調(diào)用丙号。

這是因為estimatedRowHeight estimatedSectionHeaderHeight estimatedSectionFooterHeight三個高度估算屬性由默認(rèn)的0變成了UITableViewAutomaticDimension先朦,導(dǎo)致高度計算不對,解決方法是實現(xiàn)對應(yīng)方法或吧這三個屬性設(shè)為0犬缨。

下面這個列表顯示不全也是estimatedRowHeight引起喳魏,取contentSize出錯。

五:第三方依賴庫問題

1遍尺、ReactiveCocoa Unknown warning group ‘-Wreceiver-is-weak’,ignored警告

ReactiveCocoa

項目開啟Treat warning as error截酷,所有警告都會被當(dāng)成錯誤,因此必須解決掉。
RACObserve宏定義如下:

#define RACObserve(TARGET, KEYPATH) \
    ({ \
        _Pragma("clang diagnostic push") \
        _Pragma("clang diagnostic ignored \"-Wreceiver-is-weak\"") \
        __weak id target_ = (TARGET); \
        [target_ rac_valuesForKeyPath:@keypath(TARGET, KEYPATH) observer:self]; \
        _Pragma("clang diagnostic pop") \
    })

在之前的Xcode中如果消息接受者是一個weak對象迂苛,clang編譯器會報receiver-is-weak警告三热,所以加了這段push&pop,最新的clang已經(jīng)把這個警告給移除三幻,所以沒必要加push&pop了就漾。

ReactiveCocoa已經(jīng)不再維護(hù)OC版本,大多數(shù)OC開發(fā)者用的都是2.5這個版本念搬,只能自己fork一份了抑堡,誰知github上的v2.5代碼不包含對應(yīng)的.podspec文件,只好到CocoaPods/Specs上將對應(yīng)的json文件翻譯成.podspec文件朗徊,如果你也有這個需要首妖,可以修改Podfile

pod 
'ReactiveCocoa'
, :git => 
'https://github.com/zhao0/ReactiveCocoa.git'
, :tag => 
'2.5.2'

六:push上下移動

在iOS11后大家會發(fā)現(xiàn)如果我們push一個帶有uiscrollview的VC或者就是一個帶有UITableviewVC時。在push動畫時爷恳,可能會出現(xiàn)一個從左往右并且從下往上移動的情況有缆。這個是因為iOS11的新特性是把safeareacontentinset進(jìn)行疊加導(dǎo)致的。解決的方法就是設(shè)置UIScrollViewcontentInsetAdjustmentBehavior的屬性值為UIScrollViewContentInsetAdjustmentNever温亲。記得這個屬性是iOS11哦棚壁。

七:導(dǎo)航欄高度變化

導(dǎo)航欄在iOS10之前都是默認(rèn)的64p,但是栈虚,到了iOS10就不單單是64p了袖外,可以看一下系統(tǒng)的信息App,在iOS11添加了大標(biāo)題.


在上圖可以知道魂务,在iOS11導(dǎo)航欄多了一個LargeTitleView曼验,專門顯示大字標(biāo)題用的,整個導(dǎo)航欄的高度達(dá)到了96p粘姜,比之前的導(dǎo)航欄多了32p蚣驼,不過,大字標(biāo)題默認(rèn)是關(guān)閉的相艇,所以一般情況下颖杏,導(dǎo)航欄的高度還是64p。

八:細(xì)節(jié)適配

1,適配UITableView

if#available(iOS11.0, *) {
self.contentInsetAdjustmentBehavior= .never
self.estimatedRowHeight=0
self.estimatedSectionHeaderHeight=0
self.estimatedSectionFooterHeight=0
}else{
}

2,適配UIScrollView

if#available(iOS11.0, *) {
scrollView?.contentInsetAdjustmentBehavior= .never
}else{
}

3,適配網(wǎng)頁加載不全下面有白邊

if#available(iOS11.0, *) {
webView.scrollView.contentInsetAdjustmentBehavior= .never
}else{
}

4,適配iPhoneX不能鋪滿屏的問題

給Brand Assets添加一張1125*2436大小的圖片

5,xcode9打包注意事項

xcode9新打包要在構(gòu)建版本的時候加入1024*1024 AppSore icon

首先建議觀看今年WWDC的一個視頻 Updating Your App for iOS 11坛芽,視頻講解了iOS 11一些API的變化留储,對理解適配過程有幫助。
部分內(nèi)容摘自簡書作者zhao0的文章簡書App適配iOS 11,在此感謝;

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末咙轩,一起剝皮案震驚了整個濱河市获讳,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌活喊,老刑警劉巖丐膝,帶你破解...
    沈念sama閱讀 222,104評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡帅矗,警方通過查閱死者的電腦和手機(jī)偎肃,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,816評論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來浑此,“玉大人累颂,你說我怎么就攤上這事×菥悖” “怎么了紊馏?”我有些...
    開封第一講書人閱讀 168,697評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長蒲犬。 經(jīng)常有香客問我朱监,道長,這世上最難降的妖魔是什么原叮? 我笑而不...
    開封第一講書人閱讀 59,836評論 1 298
  • 正文 為了忘掉前任翎迁,我火速辦了婚禮每篷,結(jié)果婚禮上帅刀,老公的妹妹穿的比我還像新娘吵护。我一直安慰自己赡若,他們只是感情好达布,可當(dāng)我...
    茶點故事閱讀 68,851評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著逾冬,像睡著了一般黍聂。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上身腻,一...
    開封第一講書人閱讀 52,441評論 1 310
  • 那天产还,我揣著相機(jī)與錄音,去河邊找鬼嘀趟。 笑死脐区,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的她按。 我是一名探鬼主播牛隅,決...
    沈念sama閱讀 40,992評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼酌泰!你這毒婦竟也來了媒佣?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,899評論 0 276
  • 序言:老撾萬榮一對情侶失蹤陵刹,失蹤者是張志新(化名)和其女友劉穎默伍,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,457評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡也糊,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,529評論 3 341
  • 正文 我和宋清朗相戀三年炼蹦,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片显设。...
    茶點故事閱讀 40,664評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡框弛,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出捕捂,到底是詐尸還是另有隱情瑟枫,我是刑警寧澤,帶...
    沈念sama閱讀 36,346評論 5 350
  • 正文 年R本政府宣布指攒,位于F島的核電站慷妙,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏允悦。R本人自食惡果不足惜膝擂,卻給世界環(huán)境...
    茶點故事閱讀 42,025評論 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望隙弛。 院中可真熱鬧架馋,春花似錦、人聲如沸全闷。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,511評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽总珠。三九已至屏鳍,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間局服,已是汗流浹背钓瞭。 一陣腳步聲響...
    開封第一講書人閱讀 33,611評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留淫奔,地道東北人山涡。 一個月前我還...
    沈念sama閱讀 49,081評論 3 377
  • 正文 我出身青樓,卻偏偏與公主長得像唆迁,于是被迫代替她去往敵國和親佳鳖。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,675評論 2 359

推薦閱讀更多精彩內(nèi)容

  • iOS 11適配源碼 Demo地址 安全區(qū)域的適配 用Xcode 9 創(chuàng)建storyboard或者xib時媒惕,最低版...
    Bytesking閱讀 6,536評論 5 24
  • 蘋果虐我千百遍系吩,我待蘋果如初戀。 橫批:iOS開發(fā)苦妒蔚。iOS 11系統(tǒng)對于開發(fā)者來說穿挨,變化不算小月弛,各種適配問題接踵...
    Asd_520閱讀 1,808評論 1 2
  • 1.1、iOS11新增版本判斷API iOS11版本現(xiàn)在有了簡單的API科盛,OC也開始支持swfit的@availa...
    面條168閱讀 438評論 0 1
  • 隨著Xcode GM版本發(fā)布帽衙,適配iOS 11也就提上了日程,總的來說整個適配過程(不包含適配iPhone X)不...
    xiaon閱讀 459評論 0 0
  • 1 寫作的意義 首先,寫作是一份可以把自己的時間出售很多份的技能榨崩。說的更直接一點谴垫,寫作是最能幫我們通往財富自由之路...
    幣市柳少俠閱讀 287評論 0 0