美文网首页 移动 前端 Python Android Java
如何清晰高效设置UINavigationBar样式

如何清晰高效设置UINavigationBar样式

作者: LeoAu | 来源:发表于2015-08-21 10:56 被阅读1417次

    在我们平时需要设置UINavigationBar的样式时候,往往是直接通过UINavigationController来调用里面的UINavigationBar来进行设置,
    如果要调整UINavigationBar的样式的话,下图可以作为参考


    实现代码

    HomeViewController.m

    //详细代码不一一列出
    
    //生成UINavigationController实例
    UINavigationController *nav = [UINavigationController alloc] init];}
    
    //设置title的文字属性
    NSDictionary * dict = [NSDictionary dictionaryWithObject:[UIColor whiteColor] forKey:NSForegroundColorAttributeName];
    
    nav.navigationBar.titleTextAttributes = dict;
    
    //背景颜色
    nav.navigationBar.barTintColor = [UIColor whiteColor];
    
    //设置背景是否透明
    nav.navigationBar.translucent = NO;
    
    

    但这样写的问题是设置UIView属性的工作应该尽量不要交给Controller去实现,这样对代码阅读和维护性都增加了难度,而且重用性低。那如何分离view属性设置的代码?个人建议就是创建一个子类view,在view的初始化的时候就设置其属性。

    创建两个文件BasicNavigationBar.h和BasicNavigationBar.m

    BasicNavigationBar.h

    
    #import <UIKit/UIKit.h>
    
    @interface BasicNavigationBar : UINavigationBar
    
    @end
    
    

    BasicNavigationBar.m

    
    #import "BasicNavigationBar.h"
    
    @implementation BasicNavigationBar
    
    //重写初始化view
    - (id)init {
    
        if (self = [super init]) {
            [self setBasicAttributes];
        }
        
        return self;
    }
    
    /**
     *  @author 老区
     *
     *  @brief  设置基础属性,设置是针对iOS 7.0或以上,7.0以下果断抛弃
     */
    - (void)setBasicAttributes {
        
        //标题属性
        self.titleTextAttributes =  [NSDictionary dictionaryWithObjectsAndKeys:
                              [UIColor whiteColor],NSForegroundColorAttributeName ,//字体颜色
                              [UIFont boldSystemFontOfSize:20],NSFontAttributeName //字体大小和样式
                              , nil];
        
        //设置背景颜色
        self.barTintColor = [UIColor colorWithRed:0.7255 green:0.1059 blue:0.1098 alpha:1.0];
        
        //设置背景是否透明
        self.translucent = NO;
    
        /**
         *  添加更多其它属性设置
         */
    }
    
    @end
    
    

    HomeViewController.m

    
    //生成UINavigationController实例
    UINavigationController *nav = [UINavigationController alloc] init];}
    
    /**
     *  @author 老区
     *
     *  这里是关键,设置新的NavigationBar
     */
    [nav setValue:[BasicNavigationBar new] forKeyPath:@"navigationBar"];
    
    

    大功告成!

    原创作者:老区

    相关文章

      网友评论

        本文标题:如何清晰高效设置UINavigationBar样式

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