與iPhoneX的適配小記

這幾天加班加點的把公司的app都完成了ios11和iphoneX的適配风宁,總算是松了一口氣造虏,在這里做一個小記錄

1.Xcode9下相冊等訪問權(quán)限問題

新的xcode9替換了相冊的權(quán)限key,由原來的 NSPhotoLibraryUsageDescription替換成了NSPhotoLibraryAddUsageDescription葵蒂,在用xcode9打包的時候不提換會導(dǎo)致crash

2.導(dǎo)航欄TitileView的寬度設(shè)置

導(dǎo)航欄在iOS10之前都是默認(rèn)的64p什黑,但是盅粪,到了iOS11就不單單是64p了,可以看一下系統(tǒng)的信息App巧勤,在iOS11添加了大標(biāo)題嵌灰,而且iOS11之前導(dǎo)航欄的title是添加在UINavigationItemView上面,而navigationBarButton則直接添加在navigationBar上面颅悉;如果設(shè)置了titleView沽瞭,則titleView也是直接添加在navigationBar上面


968977-c6fe6299a9fedd8b.png

在iOS11之后,蘋果添加了新的類來管理剩瓶,navigationBar會添加在_UIButtonBarStackView上面驹溃,而_UIButtonBarStackView則添加在_UINavigationBarContentView上面;如果沒有給titleView賦值延曙,則titleView會直接添加在_UINavigationBarContentView上面豌鹤,如果賦值給了titleView,則會新生成_UITAMICAdaptorView枝缔,把titleView添加在這個類上面布疙,這個類會添加在_UINavigationBarContentView上面,所以之前的titleView的約束全部要重新寫一個ios11的約束愿卸,至于自帶的naviSearch和largeTitle因為時間有限沒有去研究過灵临,反正暫時還用不到

3.Safe Area

這個是最讓我頭疼的地方,因為iphoneX的緣故趴荸,底部的一片區(qū)域可能要用來做上拉返回Home的操作儒溉,為了防止布局到那里形成了手勢沖突,在ios11里就加上了Safe Area的概念赊舶,這個概念剛開始看文檔沒看懂什么意思睁搭,后來自己試著寫了個demo就理解了

2017-09-16-003.png
2017-09-16-004.png

黃色的部分就是蘋果認(rèn)為不會引發(fā)誤操作的區(qū)域赶诊,所以在ios11里布局的layout有了一個新的約束參照就是Safe Area,那我們之前的布局因為會導(dǎo)致"探底"所以要做修改
如果是用xib完成的約束园骆,只要在右邊菜單欄選中Use Safe Area Layout Guides

2017-09-16-006.png

就會看到xib里有一個Safe Area的約束參照


2017-09-16-005.png

那么要做的就是把原先的bottom和top約束從相對于superView改成相對于Safe Area就可以了
如果是用的代碼進(jìn)行的約束舔痪,就要改一下約束的寫法,下面是個小例子

private let greenView = UIView()
private func setupView() {
    greenView.translatesAutoresizingMaskIntoConstraints = false
    greenView.backgroundColor = .green
    view.addSubview(greenView)

    let margins = view.layoutMarginsGuide
    NSLayoutConstraint.activate([
      greenView.leadingAnchor.constraint(equalTo: margins.leadingAnchor),
      greenView.bottomAnchor.constraint(equalTo: margins.bottomAnchor)
      ])
}

上面的代碼是相對于原先的view進(jìn)行約束,效果如下

2017-09-17-001.png
if #available(iOS 11, *) {
  let guide = view.safeAreaLayoutGuide
  NSLayoutConstraint.activate([
   greenView.leadingAnchor.constraintEqualToSystemSpacingBelow(guide.topAnchor, multiplier: 1.0),
   guide.bottomAnchor.constraintEqualToSystemSpacingBelow(greenView.bottomAnchor, multiplier: 1.0)
   ])

}

上面的代碼則是選擇用safeArea進(jìn)行約束锌唾,效果如下

2017-09-17-002.png

那如果是像我一樣之前用的masnory的锄码,只要把block里面和top,bottom有關(guān)的刪除掉晌涕,在下面模仿上面的樣式加上相關(guān)約束就可以了
------------------更新----------------------
最新的masnory已可以支持safeArea


4.UITableView

UIScrollView相關(guān)的東西一起記在這里伤疙,都是相同的問題。
首先是automaticallyAdjustsScrollViewInsets這個屬性被廢棄了嵌巷,之前如果設(shè)置automaticallyAdjustsScrollViewInsets=NO鸟雏,就不會偏移64p,在ios11里要用新的屬性來設(shè)置

if #available(iOS 11.0, *) {
      tableView.contentInsetAdjustmentBehavior = .never
}

然后ios11里默認(rèn)啟用Self-Sizing惧财,tableView不會一次性計算所有的cell的高度了巡扇,只會計算當(dāng)前屏幕能夠顯示的cell個數(shù)再加上幾個,滑動時垮衷,tableView不停地得到新的cell厅翔,更新自己的contenSize,在滑到最后的時候搀突,會得到正確的contenSize刀闷,所有estimated 高度默認(rèn)值從iOS11之前的 0 改變?yōu)閁ITableViewAutomaticDimension,如果不想開啟的話可以用下面的方法關(guān)閉

tableView.estimatedRowHeight = 0;
tableView.estimatedSectionHeaderHeight = 0;
tableView.estimatedSectionFooterHeight = 0;

5.iphoneX全屏顯示

這個只要添加一個尺寸為1125?×?2436的啟動圖就可以了仰迁,在Contents.json里加上

{
      "extent" : "full-screen",
      "idiom" : "iphone",
      "subtype" : "2436h",
      "filename" : "IOS開機(jī)X.png",
      "minimum-system-version" : "11.0",
      "orientation" : "portrait",
      "scale" : "3x"
    }

6.IQKeyBoardManager不顯示Done按鈕的問題

目前這個問題還沒有解決甸昏,看了下作者的github都快幾個月沒更新了,但是有沒有什么更好的解決方案徐许,現(xiàn)在暫時用的替代方案是點擊空白處讓鍵盤消失的方法筒扒,如果有什么更好的解決方案請留言告訴我,多謝
------------------更新----------------------
最新的IQKeyBoardManager已解決這個問題


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末绊寻,一起剝皮案震驚了整個濱河市花墩,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌澄步,老刑警劉巖冰蘑,帶你破解...
    沈念sama閱讀 218,858評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異村缸,居然都是意外死亡祠肥,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,372評論 3 395
  • 文/潘曉璐 我一進(jìn)店門梯皿,熙熙樓的掌柜王于貴愁眉苦臉地迎上來仇箱,“玉大人县恕,你說我怎么就攤上這事〖燎牛” “怎么了忠烛?”我有些...
    開封第一講書人閱讀 165,282評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長权逗。 經(jīng)常有香客問我美尸,道長,這世上最難降的妖魔是什么斟薇? 我笑而不...
    開封第一講書人閱讀 58,842評論 1 295
  • 正文 為了忘掉前任师坎,我火速辦了婚禮,結(jié)果婚禮上堪滨,老公的妹妹穿的比我還像新娘胯陋。我一直安慰自己,他們只是感情好袱箱,可當(dāng)我...
    茶點故事閱讀 67,857評論 6 392
  • 文/花漫 我一把揭開白布惶岭。 她就那樣靜靜地躺著,像睡著了一般犯眠。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上症革,一...
    開封第一講書人閱讀 51,679評論 1 305
  • 那天筐咧,我揣著相機(jī)與錄音,去河邊找鬼噪矛。 笑死量蕊,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的艇挨。 我是一名探鬼主播残炮,決...
    沈念sama閱讀 40,406評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼缩滨!你這毒婦竟也來了势就?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,311評論 0 276
  • 序言:老撾萬榮一對情侶失蹤脉漏,失蹤者是張志新(化名)和其女友劉穎苞冯,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體侧巨,經(jīng)...
    沈念sama閱讀 45,767評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡舅锄,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了司忱。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片皇忿。...
    茶點故事閱讀 40,090評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡畴蹭,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出鳍烁,到底是詐尸還是另有隱情叨襟,我是刑警寧澤,帶...
    沈念sama閱讀 35,785評論 5 346
  • 正文 年R本政府宣布老翘,位于F島的核電站芹啥,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏铺峭。R本人自食惡果不足惜墓怀,卻給世界環(huán)境...
    茶點故事閱讀 41,420評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望卫键。 院中可真熱鬧傀履,春花似錦、人聲如沸莉炉。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,988評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽絮宁。三九已至梆暮,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間绍昂,已是汗流浹背啦粹。 一陣腳步聲響...
    開封第一講書人閱讀 33,101評論 1 271
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留窘游,地道東北人唠椭。 一個月前我還...
    沈念sama閱讀 48,298評論 3 372
  • 正文 我出身青樓,卻偏偏與公主長得像忍饰,于是被迫代替她去往敵國和親贪嫂。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,033評論 2 355

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

  • 前言 蘋果WWDC開發(fā)者大會上艾蓝,終于發(fā)布了大家期待已久的iOS 11力崇,有些新特性功能確實出人意料。不過大的方面蘋果...
    Mr_Say_Yes閱讀 3,318評論 6 15
  • 一赢织、前言 iOS11發(fā)布也有一段時間了餐曹,每次版本升級,相關(guān)的適配工作當(dāng)然是下個版本的核心工作之一敌厘。而且這次iOS1...
    景銘巴巴閱讀 10,987評論 8 105
  • 隨著Xcode GM版本發(fā)布台猴,適配iOS 11也就提上了日程,總的來說整個適配過程不是很麻煩。建議觀看今年WWDC...
    iOS駱駝閱讀 2,700評論 1 6
  • 公司的App是居于iOS8以上的饱狂,頁面顯示在iOS8~iOS10都沒有問題曹步,但是,iOS11beta版顯示出現(xiàn)各種...
    一劍孤城閱讀 129,508評論 107 224
  • 今晚開會休讳,回來的晚八點多了讲婚。也沒吃飯,就去田徑場跑了幾圈俊柔,跑累了用美團(tuán)點了個外賣筹麸,然后繼續(xù)散步。 還在回來的路上雏婶,...
    嵐風(fēng)的葉子閱讀 203評論 0 0