国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - IOS - Xcode 9下適配iPhoneX導致iOS 10不兼容問題的解決方法

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

2021-04-23 18:16頤和園 IOS

這篇文章主要給大家介紹了關于Xcode 9下適配iPhoneX導致iOS 10不兼容問題的解決方法,文中通過圖文介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧。

前言

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

ios 11 下點擊“省市廣播站”,下級菜單中的按鈕正常顯示:

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

ios 10 下點擊“省市廣播站”,下級菜單顯示為空白:

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

解決方法

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

百思不得其解。后來聯想到 xcode 9 為了適配 iphonex 曾經對自動布局約束進行了一些改變,比如“安全區”的概念,于是懷疑是新的 ios sdk 對 scrollview 的某些布局屬性進行了修改。

通過將兩種模擬器下的 scroll view 屬性進行打印后發現,在 ios 10/11 下,scroll view 的 contentinset 屬性是有所區別的。

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

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

?
1
2
3
if ([uidevice currentdevice].systemversion.floatvalue < 11.0) {
  _scrollbar.contentinset = uiedgeinsetszero;
 }

發現在 ios 10 下菜單居然顯示了!

這種方式雖然在一定程度上解決了問題,但并不徹底,在測試中發現,ios 10 下的布局問題偶爾還是會出現(特別是 view controller 第一次加載時)。因為二級菜單需要進行一個網絡加載,這個加載的速度有可能快、有可能慢,那么當第一次頁面顯示完成之后,有可能二級菜單已經顯示完了,自動布局引擎還沒有完成計算,它有可能再次修改 scroll view 的 contentinset 值,從在頁面第一次加載時,菜單顯示不出來。

要解決這個問題,必須思考其它方式。比如 uiscrollviewdelegate 協議。

首先將 view controller 聲明為實現 uiscrollviewdelegate:

?
1
<uiscrollviewdelegate>

設置 scroll view 的 delegate 委托:

?
1
_scrollbar.delegate = self;

然后實現 scrollviewdidscroll 委托方法:

?
1
2
3
4
5
6
// mark: - uiscrollviewdelegate
-(void)scrollviewdidscroll:(uiscrollview *)scrollview{
 if (scrollview == _scrollbar && scrollview.contentoffset.y != 0){
  _scrollbar.contentinset = uiedgeinsetszero;
 }
}

運行 app,這次問題得到了完美解決。

注意:所有 uiscrollview 子類都有此問題。如果你是用 ib 進行布局,則在使用 align to edges 時,需要注意將四邊對齊于 superview,而不是默認的 safe area,否則就會出現此問題。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對服務器之家的支持。

原文鏈接:https://blog.csdn.net/kmyhy/article/details/80061838

延伸 · 閱讀

精彩推薦
  • IOSiOS中MD5加密算法的介紹和使用

    iOS中MD5加密算法的介紹和使用

    MD5加密是最常用的加密方法之一,是從一段字符串中通過相應特征生成一段32位的數字字母混合碼。對輸入信息生成唯一的128位散列值(32個字符)。這篇文...

    LYSNote5432021-02-04
  • IOS詳解iOS中多個網絡請求的同步問題總結

    詳解iOS中多個網絡請求的同步問題總結

    這篇文章主要介紹了詳解iOS中多個網絡請求的同步問題總結,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧...

    liang199111312021-03-15
  • IOSiOS中滑動控制屏幕亮度和系統音量(附加AVAudioPlayer基本用法和Masonry簡單使用)

    iOS中滑動控制屏幕亮度和系統音量(附加AVAudioPlayer基本用法和

    這篇文章主要介紹了iOS中滑動控制屏幕亮度和系統音量(附加AVAudioPlayer基本用法和Masonry簡單使用)的相關資料,需要的朋友可以參考下...

    CodingFire13652021-02-26
  • IOSiOS實現控制屏幕常亮不變暗的方法示例

    iOS實現控制屏幕常亮不變暗的方法示例

    最近在工作中遇到了要將iOS屏幕保持常亮的需求,所以下面這篇文章主要給大家介紹了關于利用iOS如何實現控制屏幕常亮不變暗的方法,文中給出了詳細的...

    隨風13332021-04-02
  • IOSiOS開發技巧之狀態欄字體顏色的設置方法

    iOS開發技巧之狀態欄字體顏色的設置方法

    有時候我們需要根據不同的背景修改狀態欄字體的顏色,下面這篇文章主要給大家介紹了關于iOS開發技巧之狀態欄字體顏色的設置方法,文中通過示例代碼...

    夢想家-mxj8922021-05-10
  • IOSiOS開發之視圖切換

    iOS開發之視圖切換

    在iOS開發中視圖的切換是很頻繁的,獨立的視圖應用在實際開發過程中并不常見,除非你的應用足夠簡單。在iOS開發中常用的視圖切換有三種,今天我們將...

    執著丶執念5282021-01-16
  • IOSiOS自定義UICollectionViewFlowLayout實現圖片瀏覽效果

    iOS自定義UICollectionViewFlowLayout實現圖片瀏覽效果

    這篇文章主要介紹了iOS自定義UICollectionViewFlowLayout實現圖片瀏覽效果的相關資料,需要的朋友可以參考下...

    jiangamh8882021-01-11
  • IOSiOS中UILabel實現長按復制功能實例代碼

    iOS中UILabel實現長按復制功能實例代碼

    在iOS開發過程中,有時候會用到UILabel展示的內容,那么就設計到點擊UILabel復制它上面展示的內容的功能,也就是Label長按復制功能,下面這篇文章主要給大...

    devilx12792021-04-02
主站蜘蛛池模板: 91毛片视频 | 免费成人在线视频观看 | 国产一区二区三区在线视频 | 新久久久| 亚洲精品国精品久久99热 | 精精国产| 午夜免费视频福利 | 91久久综合亚洲鲁鲁五月天 | 婷婷久久综合九色综合绿巨人 | 成人羞羞网站 | 夫妻午夜影院 | www.久久.com | 噜噜噜视频在线观看 | 在线国产视频 | av网站在线免费观看 | 欧美一区二区久久久 | 免费观看欧美一级大片 | 中文字幕在线视频观看 | 日韩欧美一区二区三区 | 欧美激情网 | 九九热精品视频在线免费观看 | 成人免费观看cn | 国产中文字幕一区 | 久久性精品| 久久精品电影网 | 日韩在线精品视频 | 日韩激情一区二区 | 糈精国产xxxx在线观看 | 久久免费精品一区二区三区 | 欧美日韩免费视频 | 日韩一区二区精品视频 | 天天天天操 | 久久精品夜夜夜夜夜久久 | 亚洲精品国产精品国自产在线 | 亚洲精品日本 | 亚洲视频精品一区 | 福利资源在线观看 | 日韩在线免费视频 | 亚洲免费视频在线 | 中文字幕日韩在线 | 色天天综合 |