亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

iOS導航欄對控制器view的影響是什么

發布時間:2021-11-15 11:43:47 來源:億速云 閱讀:151 作者:iii 欄目:編程語言

本篇內容介紹了“iOS導航欄對控制器view的影響是什么”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

前言

當我們設置導航欄的某些屬性的時候會導致控制器View的布局不是從window的 (0,0)點開始布局,會從導航欄底部開始布局,而此時在 viewDidLoad 中 獲取到View的frame 確實從(0,0)開始的,只有在 viewDidAppear中才能獲取到 view 最終的實際 frame

一些屬性

在了解 UINavigationBar之前,有必要了解 UINavigationBar 的一些屬性

///默認 default 半透明 black 黑色open var barStyle: UIBarStyle// 底部陰影橫線,默認nil// 官方解釋還涉及到了一個設置背景圖片的方法 -setBackgroundImage:forBarMetrics:open var shadowImage: UIImage?// 7.0 以后已經改變,修改bar 背景顏色 請使用 -barTintColoropen var tintColor: UIColor!// default is nil bar 的背景顏色open var barTintColor: UIColor?/// 影響比較大的屬性見下文,是否是半透明的open var isTranslucent: Bool // Default is NO on iOS 6 and earlier. Always YES if barStyle is set to UIBarStyleBlackTranslucent

一些條件

///當前 控制器并不是 tableviewcontrollerself.view.backgroundColor = .cyanself.tableView.backgroundColor = .redself.navigationItem.title = "rootVC 標題"tableView.frame = view.bounds

1.1 默認導航欄 帶有半透明效果

此時view 和 tableview 和 導航欄布局

1 view全屏布局

2 tableview默認從導航欄下部開始布局

3 導航欄半透明

細節 : 此時導航欄中的 _UIVisualEffectBackdropView 屬性變成紅色即 tableview的背景色

1.2 此時如果想讓tableview 從頂部開始布局可添加代碼

if #available(iOS 11.0,*) {   self.tableView.contentInsetAdjustmentBehavior = UIScrollView.ContentInsetAdjustmentBehavior.never;  } else {   self.automaticallyAdjustsScrollViewInsets = false;  }

神奇的是 如果 tableview從頂部布局 此時導航欄中的 _UIVisualEffectBackdropView 屬性又會變成默認白色

2 設置導航欄 isTranslucent屬性

isTranslucent 在6.0以后默認是 true

如果設置為false

self.navigationController?.navigationBar.isTranslucent = false

此時布局

1 view 從導航欄底部布局

2 tableview 從view (0,0) 布局

3 導航欄不透明 _UIBarBackground 默認為白色

3.1設置barTintColor

self.navigationController?.navigationBar.isTranslucent = trueself.navigationController?.navigationBar.barTintColor = UIColor.purple

此時布局和默認一樣

1 view從 (0,0)布局

2 tableview從導航欄底部布局3 導航欄半透明

不同的是 UIVisualEffectView多加了一個 _UIVisualEffectSubview 用來顯示我們自定義的背景色

其他兩個 _UIVisualEffectSubview 和 _UIVisualEffectBackdropView view 用來實現半透明效果

3.2在 barTintColor基礎上設置 isTranslucent = false 屬性

結果 和 2 中的效果一樣。不同的是

_UIBarBackground 變成了我們自定義的顏色

4.1 設置 setBackgroundImage

設置一張純色圖片

self.navigationBar.setBackgroundImage(UIColor.mm_colorImgHex(color_vaule: hex,alpha: 1), for: UIBarPosition.any, barMetrics: .default)

此時 布局

1 view 從導航欄底部布局 view---(0.0, 88.0, 414.0, 808.0)

2 tableview 從(0,0) 布局

3 導航欄不透明

此時打印導航欄 isTranslucent屬性 為false也就是說如果調用了setBackgroundImage會默認 將 isTranslucent 置位 false

translate-----Optional(false)

4.2 我們在4.1的情況下 修改 isTranslucent

在 viewWillAppear 中修改 isTranslucent 為 true

此時布局

1 view 全屏布局

2 tableview從導航欄底部頂部開始布局

3 導航欄透明

此時打印我們的 _UIBarBackground 中的 BackgroundImage 透明度已被修改

<UIImageView: 0x7fbef1f0ce10; frame = (0 0; 414 88); alpha = 0.909804; opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x600000cabd00>>

“iOS導航欄對控制器view的影響是什么”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

互助| 若尔盖县| 揭阳市| 永善县| 平远县| 中阳县| 图木舒克市| 望城县| 同仁县| 芮城县| 乐清市| 双流县| 乐业县| 华坪县| 随州市| 揭东县| 汝阳县| 双鸭山市| 兴国县| 杨浦区| 乐平市| 泰来县| 平定县| 任丘市| 牟定县| 武穴市| 沁源县| 台山市| 双江| 湖南省| 山东| 五华县| 安康市| 驻马店市| 玉龙| 定远县| 衡阳县| 马尔康县| 青海省| 大同市| 永川市|