最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Xcode 9下適配iPhoneX導(dǎo)致iOS 10不兼容問題的解決方法

 更新時間:2018年04月25日 08:31:12   作者:頤和園  
這篇文章主要給大家介紹了關(guān)于Xcode 9下適配iPhoneX導(dǎo)致iOS 10不兼容問題的解決方法,文中通過圖文介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。

前言

前久發(fā)現(xiàn)測試組提交來一個 bug,說有的布局在 iOS 11 上正常,在 iOS 10 下不正常。分別在 iOS 11 模擬器和 iOS 10.3 模擬器上跑了一下 app,發(fā)現(xiàn)果然如此,如下圖所示:

iOS 11 下點(diǎn)擊“省市廣播站”,下級菜單中的按鈕正常顯示:

iOS 10 下點(diǎn)擊“省市廣播站”,下級菜單顯示為空白:

解決方法

檢查代碼,發(fā)現(xiàn)下級菜單中的按鈕是以手動布局方式動態(tài)添加到一個 scroll view 中的。添加時指定了按鈕的框架,框架計算完全正常,按鈕已經(jīng)添加在 scroll view 的 subviews 中了(可以在 LLDB 中用 po 命令確認(rèn) )。同時在打印 subviews 的過程中發(fā)現(xiàn),這些按鈕的 frame 并未被改變,仍然是 initWithFrame 時設(shè)定的值,但在 iOS 10.3 下就是不顯示,用視圖調(diào)試器也看不到。

百思不得其解。后來聯(lián)想到 Xcode 9 為了適配 iPhoneX 曾經(jīng)對自動布局約束進(jìn)行了一些改變,比如“安全區(qū)”的概念,于是懷疑是新的 iOS SDK 對 ScrollView 的某些布局屬性進(jìn)行了修改。

通過將兩種模擬器下的 scroll view 屬性進(jìn)行打印后發(fā)現(xiàn),在 iOS 10/11 下,scroll view 的 contentInset 屬性是有所區(qū)別的。

在 iOS 11 中,contentInset 的值是 (0,0,0,0),而在 iOS 10 中卻變成了 (64,0,0,0)。

于是嘗試在代碼中加入了一句:

if ([UIDevice currentDevice].systemVersion.floatValue < 11.0) {
  _scrollBar.contentInset = UIEdgeInsetsZero;
 }

發(fā)現(xiàn)在 iOS 10 下菜單居然顯示了!

這種方式雖然在一定程度上解決了問題,但并不徹底,在測試中發(fā)現(xiàn),iOS 10 下的布局問題偶爾還是會出現(xiàn)(特別是 view controller 第一次加載時)。因?yàn)槎壊藛涡枰M(jìn)行一個網(wǎng)絡(luò)加載,這個加載的速度有可能快、有可能慢,那么當(dāng)?shù)谝淮雾撁骘@示完成之后,有可能二級菜單已經(jīng)顯示完了,自動布局引擎還沒有完成計算,它有可能再次修改 scroll view 的 contentInset 值,從在頁面第一次加載時,菜單顯示不出來。

要解決這個問題,必須思考其它方式。比如 UIScrollViewDelegate 協(xié)議。

首先將 view controller 聲明為實(shí)現(xiàn) UIScrollViewDelegate:

<UIScrollViewDelegate>

設(shè)置 scroll view 的 delegate 委托:

_scrollBar.delegate = self;

然后實(shí)現(xiàn) scrollViewDidScroll 委托方法:

// MARK: - UIScrollViewDelegate
-(void)scrollViewDidScroll:(UIScrollView *)scrollView{
 if (scrollView == _scrollBar && scrollView.contentOffset.y != 0){
  _scrollBar.contentInset = UIEdgeInsetsZero;
 }
}

運(yùn)行 app,這次問題得到了完美解決。

注意:所有 UIScrollView 子類都有此問題。如果你是用 IB 進(jìn)行布局,則在使用 Align to Edges 時,需要注意將四邊對齊于 superview,而不是默認(rèn)的 Safe Area,否則就會出現(xiàn)此問題。

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

相關(guān)文章

  • ios基礎(chǔ)教程之常見的數(shù)組使用方法

    ios基礎(chǔ)教程之常見的數(shù)組使用方法

    這篇文章主要給大家介紹了關(guān)于ios基礎(chǔ)教程之常見的數(shù)組使用方法的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-01-01
  • IOS UITableView和NavigationBar的常用設(shè)置詳解

    IOS UITableView和NavigationBar的常用設(shè)置詳解

    這篇文章主要介紹了IOS UITableView和NavigationBar的常用設(shè)置詳解的相關(guān)資料,需要的朋友可以參考下
    2017-04-04
  • iOS實(shí)現(xiàn)抖音點(diǎn)贊動畫效果

    iOS實(shí)現(xiàn)抖音點(diǎn)贊動畫效果

    這篇文章主要為大家詳細(xì)介紹了iOS實(shí)現(xiàn)抖音點(diǎn)贊動畫效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-01-01
  • IOS Xcode調(diào)試常用命令和斷點(diǎn)整理

    IOS Xcode調(diào)試常用命令和斷點(diǎn)整理

    這篇文章主要介紹了IOS Xcode調(diào)試常用命令和斷點(diǎn)整理的相關(guān)資料,這里對IOS Xcode調(diào)試常用命令進(jìn)行了總結(jié),需要的朋友可以參考下
    2016-12-12
  • IOS觀察者設(shè)計模式

    IOS觀察者設(shè)計模式

    什么是觀察者模式 什么是觀察者模式?你曾經(jīng)訂閱過報紙嗎?在訂閱報紙的時候,你不用去任何地方,只需要將你的個人地址信息以及訂閱信息告訴出版社,出版社就知道如何將相關(guān)報紙傳遞,本文給大家介紹ios觀察者模式,感興趣的朋友一起看看吧
    2015-12-12
  • swift3.0網(wǎng)絡(luò)圖片緩存原理簡析

    swift3.0網(wǎng)絡(luò)圖片緩存原理簡析

    這篇文章主要為大家簡析了swift3.0網(wǎng)絡(luò)圖片緩存原理,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-09-09
  • iOS獲取cell中webview的內(nèi)容尺寸

    iOS獲取cell中webview的內(nèi)容尺寸

    這篇文章主要介紹了iOS獲取cell中webview內(nèi)容尺寸,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-09-09
  • 清除WKWebView cookies的方法

    清除WKWebView cookies的方法

    下面小編就為大家?guī)硪黄宄齏KWebView cookies的方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-04-04
  • 仿IOS的越界回彈效果和左右滑動功能

    仿IOS的越界回彈效果和左右滑動功能

    本文主要給大家講述了制作一個仿IOS的越界回彈效果和左右滑動功能,簡易的側(cè)滑菜單控件,對此有興趣的朋友參考下學(xué)習(xí)下吧。
    2018-02-02
  • iOS開發(fā)系列--詳細(xì)講解C語言之存儲方式和作用域

    iOS開發(fā)系列--詳細(xì)講解C語言之存儲方式和作用域

    本篇文章主要介紹了iOS開發(fā)系列--詳細(xì)講解C語言之存儲方式和作用域,具有一定的參考價值,有需要的可以了解一下。
    2016-11-11

最新評論

晋城| 泰和县| 平南县| 洛隆县| 禄劝| 寿阳县| 喜德县| 张北县| 彩票| 徐州市| 蒙自县| 平安县| 百色市| 大姚县| 衡水市| 惠东县| 陕西省| 明星| 广德县| 淮滨县| 香港| 通山县| 托克托县| 平罗县| 呈贡县| 雅江县| 咸丰县| 鞍山市| 柞水县| 南陵县| 蒲城县| 团风县| 广水市| 宜兰市| 泰来县| 临洮县| 乐亭县| 寿宁县| 澄江县| 洛浦县| 鹿泉市|