美文网首页
设置NavigationBar的颜色

设置NavigationBar的颜色

作者: LearningCoding | 来源:发表于2016-06-07 20:18 被阅读6155次

    在开发APP时,当前为了让APP更加美观,经常会给NavigationBar设置一个颜色,如果你直接给navigationBar设置颜色,

    self.navigationController.navigationBar.backgroundColor = [UIColor whiteColor];
        self.navigationController.navigationBar.barTintColor = [UIColor whiteColor];
    

    会发现根本达不到效果,呈现出来的颜色根本不是设置的颜色,这是因为系统的navigation设置的透明度的原因
    那怎样才能达到想要的效果呢,你需要一张图片,然后设置它的图片就OK了

    [self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"navibar_white"] forBarMetrics:(UIBarMetricsDefault)];
    

    如果你说还需要一张图片太麻烦了,那你可以给UIImage增加一个类目color

    @interface UIImage (Color)
    /**
     *  @brief  根据颜色生成纯色图片
     *
     *  @param color 颜色
     *
     *  @return 纯色图片
     */
    @end
    
    @implementation UIImage (Color)
    /**
     *  @brief  根据颜色生成纯色图片
     *
     *  @param color 颜色
     *
     *  @return 纯色图片
     */
    + (UIImage *)imageWithColor:(UIColor *)color {
        CGRect rect = CGRectMake(0.0f, 0.0f, 1.0f, 1.0f);
        UIGraphicsBeginImageContext(rect.size);
        CGContextRef context = UIGraphicsGetCurrentContext();
        
        CGContextSetFillColorWithColor(context, [color CGColor]);
        CGContextFillRect(context, rect);
        
        UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
        UIGraphicsEndImageContext();
        
        return image;
    }
    @end
    

    代码就不需要图片了(这种类目网上一大堆,要学会利用)

    [self.navigationController.navigationBar setBackgroundImage:[UIImage imageWithColor:[UIColor whiteColor]] forBarMetrics:(UIBarMetricsDefault)];
    // 无色
    [self.navigationController.navigationBar setBackgroundImage:[[UIImage alloc] init] forBarMetrics:(UIBarMetricsDefault)];
    

    以后如果需要纯色的图片,自己生成就好了
    比如在我们使用button的时候,会给button设置不同状态的不同的颜色值,省去了给UI要图片的麻烦了

    [self.codeButton setBackgroundImage:[UIImage imageWithColor:[UIColor whiteColor]] forState:(UIControlStateNormal)];
        [self.codeButton setBackgroundImage:[UIImage imageWithColor:[UIColor whiteColor]] forState:(UIControlStateDisabled)];
        [self.codeButton setBackgroundImage:[UIImage imageWithColor:[UIColor whiteColor] forState:(UIControlStateHighlighted)];
    

    正常时候的颜色,按下去的颜色,不能按时候的颜色是不是都有了呢
    怎么才能让button不能按呢,只需要一句话

    self.codeButton.enabled = NO;
    

    是不是方便很多

    相关文章

      网友评论

          本文标题:设置NavigationBar的颜色

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