NavigationBar里的ModernPromptView

ModernPromptView 是啥在哪?

我們都知道在導(dǎo)航欄里都有個title的標(biāo)題,這個標(biāo)題是通過導(dǎo)航欄里的當(dāng)前的ViewController的實例來設(shè)置的。
self.title = "標(biāo)題"

這樣是沒有用滴: navigationController?.navigationItem.title = "標(biāo)題"

那么是否注意過,有的app在title的上面偶爾也會出現(xiàn)一串小的字符提示呢?


IMG_1884.jpg

屏幕快照 2018-07-14 11.35.05.png

確實有唉!這樣的設(shè)計還有些小清新呢,但是這個事個什么鬼東西呢?沃日··· 不會是整個導(dǎo)航欄都是完全自定義的吧!就為了個提示語?

當(dāng)然不了,這就是傳說中的ModernPromptView是NavigationBar自帶的,全名是UINavigationBarModernPromptView。(中文名咋叫呢,打開谷歌翻譯 → 摩登提示視圖 沃日···?? 這么難叫又不朗朗上口,叫出來會被笑話的吧 )


xChange.jpg
屏幕快照_2018-07-14_11_35_05.png

這雞兒多高呢,Reveal展示 在 iOS 9 上為30, iOS 11 上為34,


屏幕快照 2018-07-14 14.50.38.png

ModernPromptView上面有個Label,來展示內(nèi)容的。如果你不賦值的話,那么這個view是不會顯示的,也不會讓NavigationBar變高。

賦值:navigationItem.prompt = "完畢"

這個label的字體和顏色是可以修改的(如果你不嫌麻煩的去像下面這樣的?。┑煮w大小會被 摩登提示視圖?? 的高度限制,對了不特殊設(shè)置的話,字體顏色為黑色。很丑

let barsubViews = navigationController?.navigationBar.subviews;
        for subView in barsubViews! {
            let Anyclass = object_getClass(subView)
            let classStr = String(describing: Anyclass!)
            if classStr == "_UINavigationBarModernPromptView"
            {
                let promptLabel = subView.subviews[0] as! UILabel
                promptLabel.textColor = UIColor.white
                promptLabel.font = UIFont.systemFont(ofSize: 16)
            }
        }

我在本示例中 將它用于網(wǎng)絡(luò)加載的提示,通過控制計時器的不斷賦值,來實現(xiàn)Load· 、Load·· 、 Load···。但是實際效果并不好看。


多說一句 Reveal都打開了當(dāng)然順便貼一下NavigationBar視圖的內(nèi)部視圖了

屏幕快照 2018-07-14 15.29.57.png

很明顯NavigationBar的一級子視圖有三個(這里沒有設(shè)置iOS11才有的largeTitle)

  1. UIBarBackGround frame:(0, -20, ScreenWidth, 98) 98就是 20 + 34(在iOS 9 中是30)+ 44 整個導(dǎo)航欄和狀態(tài)欄的高度。


    屏幕快照 2018-07-14 15.35.04.png
  1. UINavigationBarContentView frame:(0, 34, ScreenWidth, 44) 此視圖內(nèi)部很復(fù)雜,本文不做展開討論了。


    屏幕快照 2018-07-14 15.43.48.png
  1. UINavigationBarModernPromptView frame(0, 0, ScreenWidth, 34) 摩登提示視圖?? 內(nèi)部很簡單只有一個Label來展示文字


    屏幕快照 2018-07-14 15.45.55.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容