NavigationBar里的ModernPromptView

作者: 像个被吓坏的孩子 | 来源:发表于2018-07-24 10:49 被阅读191次

    ModernPromptView 是啥在哪?

    我们都知道在导航栏里都有个title的标题,这个标题是通过导航栏里的当前的ViewController的实例来设置的。
    self.title = "标题"

    这样是没有用滴: navigationController?.navigationItem.title = "标题"

    那么是否注意过,有的app在title的上面偶尔也会出现一串小的字符提示呢?


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

    确实有唉!这样的设计还有些小清新呢,但是这个事个什么鬼东西呢?沃日··· 不会是整个导航栏都是完全自定义的吧!就为了个提示语?

    当然不了,这就是传说中的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,来展示内容的。如果你不赋值的话,那么这个view是不会显示的,也不会让NavigationBar变高。

    赋值:navigationItem.prompt = "完毕"

    这个label的字体和颜色是可以修改的(如果你不嫌麻烦的去像下面这样的取)但字体大小会被 摩登提示视图🤣 的高度限制,对了不特殊设置的话,字体颜色为黑色。很丑

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

    我在本示例中 将它用于网络加载的提示,通过控制计时器的不断赋值,来实现Load· 、Load·· 、 Load···。但是实际效果并不好看。


    多说一句 Reveal都打开了当然顺便贴一下NavigationBar视图的内部视图了

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

    很明显NavigationBar的一级子视图有三个(这里没有设置iOS11才有的largeTitle)

    1. UIBarBackGround frame:(0, -20, ScreenWidth, 98) 98就是 20 + 34(在iOS 9 中是30)+ 44 整个导航栏和状态栏的高度。


      屏幕快照 2018-07-14 15.35.04.png
    1. UINavigationBarContentView frame:(0, 34, ScreenWidth, 44) 此视图内部很复杂,本文不做展开讨论了。


      屏幕快照 2018-07-14 15.43.48.png
    1. UINavigationBarModernPromptView frame(0, 0, ScreenWidth, 34) 摩登提示视图🤣 内部很简单只有一个Label来展示文字


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

    相关文章

      网友评论

        本文标题:NavigationBar里的ModernPromptView

        本文链接:https://www.haomeiwen.com/subject/dgremftx.html