最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

iOS導(dǎo)航欄對控制器view的影響詳解

 更新時(shí)間:2019年09月12日 10:15:51   作者:mumuWorld  
這篇文章主要給大家介紹了關(guān)于iOS導(dǎo)航欄對控制器view的影響的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對各位iOS開發(fā)者們具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧

前言

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

一些屬性

在了解 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的背景色


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

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

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

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)為白色


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)半透明效果


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

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

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

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會默認(rèn) 將 isTranslucent 置位 false

translate-----Optional(false)

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>>

總結(jié)

由此所有情況都已測試完畢

1 view 的大小總是被導(dǎo)航欄的 isTranslucent屬性影響

2 修改 setBackgroundImage 會影響到 isTranslucent屬性。

3 修改barTintColor 屬性 NavigationBar 會為我們在 _UIVisualEffectView 中添加一個(gè) 我們自定義顏色的 _UIVisualEffectSubView

DEMO在這

歡迎指點(diǎn)Demo

題外話

通過查資料和 測試

關(guān)于 setBackgroundImage中的 UIBarMetrics參數(shù)

1  default  // 橫屏豎屏都顯示

2  compact  //表示在只橫屏下才顯示,和UIBarMetricsLandscapePhone功效一樣,不過iOS8已經(jīng)棄用了

3 defaultPrompt & compactPrompt 均無效果 不知道如何起作用

好了,以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對腳本之家的支持。

相關(guān)文章

  • iOS中的實(shí)時(shí)遠(yuǎn)程配置全紀(jì)錄

    iOS中的實(shí)時(shí)遠(yuǎn)程配置全紀(jì)錄

    這篇文章主要給大家介紹了關(guān)于iOS中實(shí)時(shí)遠(yuǎn)程配置的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對各位iOS開發(fā)者們具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-01-01
  • iPhone/iPad開發(fā)通過LocalNotification實(shí)現(xiàn)iOS定時(shí)本地推送功能

    iPhone/iPad開發(fā)通過LocalNotification實(shí)現(xiàn)iOS定時(shí)本地推送功能

    這篇文章主要介紹了iPhone/iPad開發(fā)之通過LocalNotification實(shí)現(xiàn)iOS定時(shí)本地推送功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-09-09
  • iOS11&iPhoneX適配&Xcode9打包注意事項(xiàng)

    iOS11&iPhoneX適配&Xcode9打包注意事項(xiàng)

    這篇文章主要介紹了iOS11&iPhoneX適配&Xcode9打包注意事項(xiàng),需要的朋友可以參考下
    2017-10-10
  • 解決ios手機(jī)中input輸入框光標(biāo)過長的問題

    解決ios手機(jī)中input輸入框光標(biāo)過長的問題

    在項(xiàng)目中做移動端頁面,發(fā)現(xiàn)IOS 的光標(biāo)大小很大,和安卓的完全不一樣,怎么來調(diào)整大小呢?下面小編給大家?guī)砹薸os手機(jī)中input輸入框光標(biāo)過長問題的解決方法,一起看看吧
    2018-08-08
  • 淺析iOS的Xcconfig

    淺析iOS的Xcconfig

    本篇文章介紹IOS中Xcconfig的相關(guān)知識內(nèi)容,有興趣的朋友學(xué)習(xí)下吧。
    2018-01-01
  • iOS11上Xcode9 AppIcon 圖標(biāo)不顯示

    iOS11上Xcode9 AppIcon 圖標(biāo)不顯示

    升級到iOS11系統(tǒng)下自己的項(xiàng)目桌面app圖標(biāo)不見了,是什么原因呢,經(jīng)過一番查找,終于發(fā)現(xiàn)問題所在,現(xiàn)在分享給大家
    2017-11-11
  • iOS內(nèi)存管理Tagged Pointer使用原理詳解

    iOS內(nèi)存管理Tagged Pointer使用原理詳解

    這篇文章主要為大家介紹了iOS內(nèi)存管理Tagged Pointer使用原理詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-01-01
  • 最新ios面試試題以及解決思路分析

    最新ios面試試題以及解決思路分析

    本篇內(nèi)容給大家整理了關(guān)于IOS程序員面試的試題以及相關(guān)解決方法,需要的朋友們參考一下吧。
    2017-12-12
  • iOS利用Label實(shí)現(xiàn)的簡單高性能標(biāo)簽TagView

    iOS利用Label實(shí)現(xiàn)的簡單高性能標(biāo)簽TagView

    這篇文章主要給大家介紹了關(guān)于iOS利用Label實(shí)現(xiàn)的簡單高性能標(biāo)簽TagView的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2018-03-03
  • iOS拍照后圖片自動旋轉(zhuǎn)90度的完美解決方法

    iOS拍照后圖片自動旋轉(zhuǎn)90度的完美解決方法

    今天開發(fā)一個(gè)拍照獲取照片的功能的時(shí)候, 發(fā)現(xiàn)上傳之后圖片會自動旋轉(zhuǎn)90.在測試中發(fā)現(xiàn)只要是圖片大于2M, 系統(tǒng)就會自動翻轉(zhuǎn)照片。下面小編通過本文給大家分享下解決辦法
    2016-12-12

最新評論

屯留县| 土默特左旗| 怀仁县| 富锦市| 淮安市| 马尔康县| 全州县| 射阳县| 三台县| 桐柏县| 武乡县| 道真| 汪清县| 安徽省| 泰宁县| 洛扎县| 麦盖提县| 保康县| 长寿区| 文登市| 台湾省| 陈巴尔虎旗| 三河市| 胶南市| 大化| 宜黄县| 襄汾县| 林西县| 双辽市| 邯郸市| 论坛| 南召县| 苍南县| 万安县| 闽侯县| 东乡族自治县| 克什克腾旗| 沙河市| 高台县| 长汀县| 西吉县|