亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統 > iOS > 正文

iOS導航欄對控制器view的影響詳解

2020-07-26 02:19:04
字體:
來源:轉載
供稿:網友

前言

當我們設置導航欄的某些屬性的時候會導致控制器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>>

總結

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

1 view 的大小總是被導航欄的 isTranslucent屬性影響

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

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

DEMO在這

歡迎指點Demo

題外話

通過查資料和 測試

關于 setBackgroundImage中的 UIBarMetrics參數

1  default  // 橫屏豎屏都顯示

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

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

好了,以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對武林網的支持。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品美女免费| 琪琪第一精品导航| 国产精品夜间视频香蕉| 国产亚洲一级高清| 日韩在线视频观看正片免费网站| 午夜精品www| 国产精品高潮呻吟久久av野狼| 亚洲精品综合久久中文字幕| 精品久久久久久| 91干在线观看| 国产精品小说在线| 2019中文字幕免费视频| 国产精品国产亚洲伊人久久| 欧美成人精品一区二区| 国产精品情侣自拍| 成人黄色av免费在线观看| 亚洲日本aⅴ片在线观看香蕉| 尤物九九久久国产精品的特点| 国外成人在线播放| 久久久久久国产| 一区二区三区视频免费| 欧美日韩成人在线视频| 欧美日韩免费区域视频在线观看| 国产丝袜一区二区| 九九热这里只有精品6| 日韩电视剧在线观看免费网站| 中文字幕av一区中文字幕天堂| 亚洲美女av电影| 亚洲free性xxxx护士hd| 日韩av在线网| 免费不卡在线观看av| 国产成人高清激情视频在线观看| 91国产中文字幕| 国产偷亚洲偷欧美偷精品| 欧美极品少妇全裸体| 51精品在线观看| 久久久精品免费| 中文字幕欧美日韩精品| 亚洲一区美女视频在线观看免费| 美女精品久久久| 97视频在线观看播放| 亚洲社区在线观看| 精品国产欧美一区二区三区成人| 久久精品小视频| 色综合91久久精品中文字幕| 北条麻妃99精品青青久久| 97精品欧美一区二区三区| 国产欧美精品va在线观看| 亚洲第一免费网站| 日韩中文视频免费在线观看| 国产欧亚日韩视频| 色黄久久久久久| 一区二区日韩精品| 精品视频久久久久久| 久久综合伊人77777尤物| 成人激情av在线| 国产精品稀缺呦系列在线| 国产精品久久久久不卡| 亚洲欧洲一区二区三区久久| 精品国内亚洲在观看18黄| 理论片在线不卡免费观看| 国产精品久久一| 国产精品久久久久久久久粉嫩av| 亚洲乱码国产乱码精品精| 国产亚洲人成网站在线观看| 亚洲精品福利在线观看| 3344国产精品免费看| 91精品国产成人| 午夜精品久久久久久99热软件| 久久免费视频网| 久久久成人的性感天堂| 91在线直播亚洲| 久久精品免费播放| 国产精品视频在线播放| 色综合伊人色综合网站| 国产精品69久久| 国产精品成人国产乱一区| 中文字幕日韩视频| 欧美成人在线免费| 一本色道久久综合狠狠躁篇的优点| 蜜臀久久99精品久久久无需会员| 91在线无精精品一区二区| 日韩视频免费看| 亚洲自拍偷拍区| 亚洲精品小视频在线观看| 日韩欧美高清视频| 国产精品电影网| 日韩免费av一区二区| 国产99久久精品一区二区 夜夜躁日日躁| 欧美中文字幕视频在线观看| 日本乱人伦a精品| 亚洲国产欧美日韩精品| 最近2019年日本中文免费字幕| 红桃av永久久久| 欧美午夜精品久久久久久人妖| 亚洲综合色激情五月| 俺去了亚洲欧美日韩| 中文字幕日韩专区| 国产91色在线免费| 欧美精品亚州精品| 亚洲大胆人体视频| 国产精品久久久久久久久久久新郎| 欧美精品少妇videofree| 国产美女久久久| 欧美自拍大量在线观看| 日韩欧美中文字幕在线播放| 8090成年在线看片午夜| 亚洲成人激情视频| 精品国内自产拍在线观看| 亚洲欧美日韩天堂| 欧美大片在线免费观看| 一道本无吗dⅴd在线播放一区| 国内精品久久久久久| 中文字幕精品网| 久久伊人精品视频| 亚洲美女久久久| 91在线无精精品一区二区| 欧美日韩中文在线| 国产精品精品视频一区二区三区| 日韩精品视频免费在线观看| 国产精品久久久| 亚洲va欧美va在线观看| 亚洲午夜精品视频| 国产精品美女无圣光视频| 国外成人免费在线播放| 亚洲国产日韩欧美综合久久| 国产极品jizzhd欧美| 亚洲欧美另类在线观看| 日本高清久久天堂| 91在线国产电影| 成人a免费视频| 亚洲欧美日韩中文在线制服| 欧美激情videoshd| 91sao在线观看国产| 亚洲第一区在线观看| 日韩在线视频线视频免费网站| 国产精品久久久久久久av电影| 久久久久久久久久久网站| 亚洲精品影视在线观看| 琪琪亚洲精品午夜在线| 日本精品久久中文字幕佐佐木| 国产精品久久久久久久久久久新郎| 亚洲老板91色精品久久| 国产99在线|中文| 亚洲一区制服诱惑| 久久精品国产99国产精品澳门| 日韩av片永久免费网站| 黑人巨大精品欧美一区二区一视频| 91久久精品美女高潮| 亚洲人成免费电影| 78m国产成人精品视频| 亚洲国产精彩中文乱码av在线播放| 日本不卡视频在线播放| 国产精品影院在线观看| 欧美多人爱爱视频网站| 欧美人与性动交a欧美精品| yw.139尤物在线精品视频| 欧美精品做受xxx性少妇| 精品成人国产在线观看男人呻吟| 亚洲人成伊人成综合网久久久| 91tv亚洲精品香蕉国产一区7ujn| 国产精品久久在线观看| 亚洲欧美视频在线| 欧美日韩成人精品|