溫馨提示×

溫馨提示×

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

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

iOS導(dǎo)航欄對控制器view的影響有哪些

發(fā)布時(shí)間:2021-08-17 11:56:46 來源:億速云 閱讀:297 作者:小新 欄目:移動(dòng)開發(fā)

這篇文章給大家分享的是有關(guān)iOS導(dǎo)航欄對控制器view的影響有哪些的內(nèi)容。小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨小編過來看看吧。

一些屬性

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

///默認(rèn) default 半透明 black 黑色
open var barStyle: UIBarStyle
// 底部陰影橫線,默認(rèn)nil 
// 官方解釋還涉及到了一個(gè)設(shè)置背景圖片的方法 -setBackgroundImage:forBarMetrics:
open var shadowImage: UIImage?
// 7.0 以后已經(jīng)改變,修改bar 背景顏色 請使用 -barTintColor
open 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

一些條件

///當(dāng)前 控制器并不是 tableviewcontroller
self.view.backgroundColor = .cyan
self.tableView.backgroundColor = .red
self.navigationItem.title = "rootVC 標(biāo)題"
tableView.frame = view.bounds

1.1 默認(rèn)導(dǎo)航欄 帶有半透明效果

此時(shí)view 和 tableview 和 導(dǎo)航欄布局

1 view全屏布局

2 tableview默認(rèn)從導(dǎo)航欄下部開始布局

3 導(dǎo)航欄半透明

細(xì)節(jié) : 此時(shí)導(dǎo)航欄中的 _UIVisualEffectBackdropView 屬性變成紅色即 tableview的背景色

iOS導(dǎo)航欄對控制器view的影響有哪些

iOS導(dǎo)航欄對控制器view的影響有哪些

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

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

神奇的是 如果 tableview從頂部布局 此時(shí)導(dǎo)航欄中的 _UIVisualEffectBackdropView 屬性又會(huì)變成默認(rèn)白色

iOS導(dǎo)航欄對控制器view的影響有哪些

2 設(shè)置導(dǎo)航欄 isTranslucent屬性

isTranslucent 在6.0以后默認(rèn)是 true

如果設(shè)置為false

self.navigationController?.navigationBar.isTranslucent = false

此時(shí)布局

1 view 從導(dǎo)航欄底部布局

2 tableview 從view (0,0) 布局

3 導(dǎo)航欄不透明 _UIBarBackground 默認(rèn)為白色

iOS導(dǎo)航欄對控制器view的影響有哪些

iOS導(dǎo)航欄對控制器view的影響有哪些

3.1設(shè)置barTintColor

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

此時(shí)布局和默認(rèn)一樣

1 view從 (0,0)布局

2 tableview從導(dǎo)航欄底部布局
3 導(dǎo)航欄半透明

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

其他兩個(gè) _UIVisualEffectSubview 和 _UIVisualEffectBackdropView  view 用來實(shí)現(xiàn)半透明效果

iOS導(dǎo)航欄對控制器view的影響有哪些

iOS導(dǎo)航欄對控制器view的影響有哪些

3.2在 barTintColor基礎(chǔ)上設(shè)置  isTranslucent = false 屬性

結(jié)果 和 2 中的效果一樣。不同的是

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

iOS導(dǎo)航欄對控制器view的影響有哪些

4.1 設(shè)置 setBackgroundImage

設(shè)置一張純色圖片

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

此時(shí) 布局

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

2 tableview 從(0,0) 布局

3 導(dǎo)航欄不透明

此時(shí)打印導(dǎo)航欄 isTranslucent屬性 為false也就是說如果調(diào)用了setBackgroundImage會(huì)默認(rèn) 將 isTranslucent 置位 false

translate-----Optional(false)

iOS導(dǎo)航欄對控制器view的影響有哪些

iOS導(dǎo)航欄對控制器view的影響有哪些

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

在 viewWillAppear 中修改  isTranslucent 為 true

此時(shí)布局

1 view 全屏布局

2 tableview從導(dǎo)航欄底部頂部開始布局

3 導(dǎo)航欄透明

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

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

iOS導(dǎo)航欄對控制器view的影響有哪些

iOS導(dǎo)航欄對控制器view的影響有哪些

感謝各位的閱讀!關(guān)于“iOS導(dǎo)航欄對控制器view的影響有哪些”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,讓大家可以學(xué)到更多知識(shí),如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI