日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

IOS15.0的适配

發布時間:2023/12/18 编程问答 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 IOS15.0的适配 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

IOS15.0的適配

環境
XCode13.0
IOS 15.0
在 升級xcode 13.0 之后,正式開始支持 iOS15,就需要做適配 iOS15了,在 xcode 13.0 之前的就不會有什么影響的

UINavigationBar

用新 xcode13 編譯工程后,導航欄的問題比較明顯,調試之后發現是 UINavigationBar 部分屬性的設置在 iOS15 上是無效的

查看導航欄特性 API:UINavigationBarAppearance 后發現,iOS15navigationBar 的相關屬性設置要通過實例 UINavigationBarAppearance 來實現,UINavigationBarAppearance 是 iOS13 更新的 API,應該有人已經在用,我們的應用兼容 iOS10 以上,對于導航欄的設置還沒有使用 UINavigationBarAppearance,如今在 iOS15 上失效,所以對于呈現的問題,做如下適配:

解決方法

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

// 靜止樣式 self.navigationBar.standardAppearance; // 滾動樣式 self.navigationBar.scrollEdgeAppearance; 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// 常規頁面navigationController?.navigationBar.standardAppearance = appearance } 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;// 常規頁面self.navigationController.navigationBar.standardAppearance = appearance;}

AppDelegate

[[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 背景顏色設置失效

if #available(iOS 13.0, *) { let appearance = UITabBarAppearance()// 背景色appearance.backgroundColor = .whitetabBar.standardAppearance = appearanceif #available(iOS 15.0, *) {tabBar.scrollEdgeAppearance = appearance}} 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 的時候,能發現 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之間的間距 //為了配合以前的開發習慣,我們只需要在創建實例的時候進行對間距的設置即可if #available(iOS 15.0, *) {tableView.sectionHeaderTopPadding = 0}//或者全局設置if #available(iOS 15.0, *) { UITableView.appearance().sectionHeaderTopPadding = 0} //為了配合以前的開發習慣,我們只需要在創建實例的時候進行對間距的設置即可if (@available(iOS 15.0, *)) { tableView.sectionHeaderTopPadding = 0;}//或者全局設置 if (@available(iOS 15.0, *)) {[UITableView appearance].sectionHeaderTopPadding = 0;}

總結

以上是生活随笔為你收集整理的IOS15.0的适配的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。