iOS 15 適配筆記

1706847-fcbfee4737a09262.png

前言

環(huán)境

Xcode 13.0  
iOS 15.0  

在 升級xcode 13.0 之后,正式開始支持 iOS15音榜,就需要做適配 iOS15了柒凉,在 xcode 13.0 之前的就不會有什么影響的

UINavigationBar

用新 xcode13 編譯工程后,導航欄的問題比較明顯认臊,調(diào)試之后發(fā)現(xiàn)是 UINavigationBar 部分屬性的設置在 iOS15 上是無效的

查看導航欄特性 API:UINavigationBarAppearance 后發(fā)現(xiàn)寨辩,iOS15navigationBar 的相關屬性設置要通過實例 UINavigationBarAppearance 來實現(xiàn)吓懈,UINavigationBarAppearance 是 iOS13 更新的 API,應該有人已經(jīng)在用捣染,我們的應用兼容 iOS10 以上骄瓣,對于導航欄的設置還沒有使用 UINavigationBarAppearance停巷,如今在 iOS15 上失效耍攘,所以對于呈現(xiàn)的問題,做如下適配:

解決方法

主要是以下兩個屬性 (UINavigationController 的屬性)

// 靜止樣式
self.navigationBar.standardAppearance;
// 滾動樣式
self.navigationBar.scrollEdgeAppearance;

下面只列了 UINavigationController 主要處理代碼

swift
        if #available(iOS 13.0, *) {
            let appearance = UINavigationBarAppearance()
              // 設置導航欄背景色
            appearance.backgroundColor = .white
              // 去除導航欄陰影(如果不設置clear畔勤,導航欄底下會有一條陰影線)
            appearance.shadowColor = UIColor.clear
              // 字體顏色蕾各、尺寸等
            appearance.titleTextAttributes = [NSAttributedString.Key.foregroundColor: UIColor.white]
            // 帶scroll滑動的頁面
            navigationController?.navigationBar.scrollEdgeAppearance = appearance
            // 常規(guī)頁面
            navigationController?.navigationBar.standardAppearance = appearance 
        }
Objective-C
    if (@available(iOS 13.0, *)) {
        UINavigationBarAppearance * appearance = [[UINavigationBarAppearance alloc] init];
        // 背景色
        appearance.backgroundColor = [UIColor whiteColor];
        // 去除導航欄陰影(如果不設置clear,導航欄底下會有一條陰影線)
        appearance.shadowColor = [UIColor clearColor];
        // 字體顏色庆揪、尺寸等
        appearance.titleTextAttributes = @{NSForegroundColorAttributeName: [UIColor redColor]};
        // 帶scroll滑動的頁面
        self.navigationController.navigationBar.scrollEdgeAppearance = appearance;
        // 常規(guī)頁面
        self.navigationController.navigationBar.standardAppearance = appearance;
    }
appdelegate全局設置

(代碼大差不差式曲,此處就只列出 oc 的代碼)之前有人遇到導航欄隱藏的返回按鈕失效問題,備注里面也已經(jīng)解決缸榛,并做出說明

[[UIBarButtonItem appearance] setBackButtonTitlePositionAdjustment:UIOffsetMake(-200, 0) forBarMetrics:UIBarMetricsDefault];
    // iOS 15適配
    if (@available(iOS 13.0, *)) {
        UINavigationBarAppearance *appearance = [[UINavigationBarAppearance alloc] init];
        [appearance setBackgroundColor:[UIColor whiteColor]];
        // UINavigationBarAppearance 會覆蓋原有的導航欄設置吝羞,這里需要重新設置返回按鈕隱藏,不隱藏可注釋或刪掉
        appearance.backButtonAppearance.normal.titlePositionAdjustment = UIOffsetMake(-200, 0);

        [[UINavigationBar appearance] setScrollEdgeAppearance: appearance];
        [[UINavigationBar appearance] setStandardAppearance:appearance];
    }

UITabbar

tabbar 的問題和 navigationBar 的問題屬于同一類内颗,tabbar 背景顏色設置失效

swift
        if #available(iOS 13.0, *) { 
            let appearance = UITabBarAppearance()
           // 背景色
            appearance.backgroundColor = .white
            tabBar.standardAppearance = appearance
            if #available(iOS 15.0, *) {
                tabBar.scrollEdgeAppearance = appearance
            }
        } 
Objective-C
    if (@available(iOS 13.0, *)) { 
        UITabBarAppearance * appearance = [[UITabBarAppearance alloc] init];
         // 背景色
        appearance.backgroundColor = [UIColor whiteColor];
        self.tabBar.standardAppearance = appearance; 
        if (@available(iOS 15.0, *)) {
            self.tabBar.scrollEdgeAppearance = appearance;
        }
    }

TableView

iOS 15 的 UITableView 新增了一條新屬性:sectionHeaderTopPadding钧排, 默認會給每一個 section header 增加一個高度,當我們使用 UITableViewStylePlain 初始化 UITableView 的時候均澳,能發(fā)現(xiàn) sectionHeader 增高了 22px恨溜。

/// Padding above each section header. The default value is `UITableViewAutomaticDimension`.
    @available(iOS 15.0, *)
    open var sectionHeaderTopPadding: CGFloat
    
//iOS 15中tableView會給每一個section的頂部(header以上)再加上一個22像素的高度符衔,形成一個section和section之間的間距
swift
//為了配合以前的開發(fā)習慣,我們只需要在創(chuàng)建實例的時候進行對間距的設置即可
  if #available(iOS 15.0, *) {
      tableView.sectionHeaderTopPadding = 0
  }

//或者appdelegate全局設置
  if #available(iOS 15.0, *) { 
     UITableView.appearance().sectionHeaderTopPadding = 0
   }
Objective-C
//為了配合以前的開發(fā)習慣糟袁,我們只需要在創(chuàng)建實例的時候進行對間距的設置即可
    if (@available(iOS 15.0, *)) { 
        tableView.sectionHeaderTopPadding = 0;
    }

 //或者appdelegate全局設置 
    if (@available(iOS 15.0, *)) {
        [UITableView appearance].sectionHeaderTopPadding = 0;
    }
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末判族,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子项戴,更是在濱河造成了極大的恐慌形帮,老刑警劉巖,帶你破解...
    沈念sama閱讀 207,248評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件周叮,死亡現(xiàn)場離奇詭異沃缘,居然都是意外死亡,警方通過查閱死者的電腦和手機则吟,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,681評論 2 381
  • 文/潘曉璐 我一進店門槐臀,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人氓仲,你說我怎么就攤上這事水慨。” “怎么了敬扛?”我有些...
    開封第一講書人閱讀 153,443評論 0 344
  • 文/不壞的土叔 我叫張陵晰洒,是天一觀的道長。 經(jīng)常有香客問我啥箭,道長谍珊,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,475評論 1 279
  • 正文 為了忘掉前任急侥,我火速辦了婚禮砌滞,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘坏怪。我一直安慰自己贝润,他們只是感情好,可當我...
    茶點故事閱讀 64,458評論 5 374
  • 文/花漫 我一把揭開白布铝宵。 她就那樣靜靜地躺著打掘,像睡著了一般。 火紅的嫁衣襯著肌膚如雪鹏秋。 梳的紋絲不亂的頭發(fā)上尊蚁,一...
    開封第一講書人閱讀 49,185評論 1 284
  • 那天,我揣著相機與錄音侣夷,去河邊找鬼横朋。 笑死,一個胖子當著我的面吹牛惜纸,可吹牛的內(nèi)容都是我干的叶撒。 我是一名探鬼主播绝骚,決...
    沈念sama閱讀 38,451評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼祠够!你這毒婦竟也來了压汪?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,112評論 0 261
  • 序言:老撾萬榮一對情侶失蹤古瓤,失蹤者是張志新(化名)和其女友劉穎止剖,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體落君,經(jīng)...
    沈念sama閱讀 43,609評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡穿香,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,083評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了绎速。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片皮获。...
    茶點故事閱讀 38,163評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖纹冤,靈堂內(nèi)的尸體忽然破棺而出洒宝,到底是詐尸還是另有隱情,我是刑警寧澤萌京,帶...
    沈念sama閱讀 33,803評論 4 323
  • 正文 年R本政府宣布雁歌,位于F島的核電站,受9級特大地震影響知残,放射性物質(zhì)發(fā)生泄漏靠瞎。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,357評論 3 307
  • 文/蒙蒙 一求妹、第九天 我趴在偏房一處隱蔽的房頂上張望乏盐。 院中可真熱鬧,春花似錦扒最、人聲如沸丑勤。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,357評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至耙厚,卻和暖如春强挫,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背薛躬。 一陣腳步聲響...
    開封第一講書人閱讀 31,590評論 1 261
  • 我被黑心中介騙來泰國打工俯渤, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人型宝。 一個月前我還...
    沈念sama閱讀 45,636評論 2 355
  • 正文 我出身青樓八匠,卻偏偏與公主長得像絮爷,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子梨树,可洞房花燭夜當晚...
    茶點故事閱讀 42,925評論 2 344

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

  • 本文作為自己準備適配iOS15所用坑夯,在開始適配之前,先去學習各位同學的文章抡四,記錄在此備用柜蜈。 1、導航欄UINavi...
    iOS_zy閱讀 14,366評論 5 61
  • 一指巡、NavigationBar UIBarItem UIBarItem在iOS11在中新增landscapeIma...
    灰s閱讀 3,790評論 5 11
  • 1. 設置圖片圓角 2. UIAlertController 聲明并創(chuàng)建閉包淑履,填充UIAlertAction的ha...
    俊瑤先森閱讀 3,442評論 0 8
  • iOS 11適配源碼 Demo地址 安全區(qū)域的適配 用Xcode 9 創(chuàng)建storyboard或者xib時,最低版...
    Bytesking閱讀 6,500評論 5 24
  • 16宿命:用概率思維提高你的勝算 以前的我是風險厭惡者藻雪,不喜歡去冒險秘噪,但是人生放棄了冒險,也就放棄了無數(shù)的可能勉耀。 ...
    yichen大刀閱讀 6,033評論 0 4