`

[IOS]设置NavigationBar的颜色

    博客分类:
  • IOS
阅读更多

转自:http://www.jianshu.com/p/d0c2ce8f0318?utm_campaign=maleskine&utm_content=note&utm_medium=reader_share&utm_source=weibo

 

在开发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)];

 

*经过测试,发现IOS9以上两种方法效果一样的。

 

如果你说还需要一张图片太麻烦了,那你可以给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)];

以后如果需要纯色的图片,自己生成就好了
比如在我们使用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;

是不是方便很多

分享到:
评论

相关推荐

    ios自定义tabbar和navigationbar

    在iOS应用开发中,自定义TabBar和NavigationBar是常见的需求,可以为用户提供更个性化的界面体验。本篇文章将深入探讨如何在iOS应用中实现自定义TabBar和NavigationBar,以及涉及的相关知识点。 首先,我们来讨论...

    ios-自定义NavigationBar.zip

    2. **自定义外观**:通过设置`barTintColor`、`tintColor`、`titleTextAttributes`等属性改变导航栏的颜色、标题样式。如果希望有特殊的背景图片或动画效果,可以在`drawRect:`方法中进行绘制。 3. **自定义过渡...

    IOS UITableView和NavigationBar的常用设置详解

    以上就是关于iOS中UITableView和NavigationBar的一些常见设置和操作。在实际开发中,你可能还需要根据需求调整字体、大小、动画效果等,这些都是提升用户体验的关键因素。同时,别忘了考虑不同屏幕尺寸和设备的适配...

    IOS源码——ios适用于iOS 5、iOS 6和iOS 7的自定义NavigationBar.zip

    - iOS 6: 自定义navigationBar主要是通过图像和颜色来改变外观。 - iOS 7: 引入了扁平化设计,导航栏的背景变为透明,提供了新的UIAppearance API以支持全局样式修改。 2. **UIAppearance API**: - ...

    IOS应用源码之ios适用于iOS 5、iOS 6和iOS 7的自定义NavigationBar.zip

    - 使用`appearance` API来设置全局的导航栏样式,这在iOS 5及以上版本可用。 - 创建自定义的`UIBarButtonItem`子类,自定义按钮的样式和行为。 - 使用`titleView`或`leftBarButtonItem`、`rightBarButtonItem`...

    ios适用于iOS 5、iOS 6和iOS 7的自定义NavigationBar源代码设计资料

    这份名为"ios适用于iOS 5、iOS 6和iOS 7的自定义NavigationBar源代码设计资料"的资源,提供了在不同iOS版本上创建自定义导航栏的详细指导和源代码示例。 在iOS 5、iOS 6和iOS 7中,虽然`UINavigationController`的`...

    ios-响应式NavigationBar.zip

    我们可以通过这个协议修改NavigationBar的默认样式,包括颜色、字体、透明度等。 3. 响应式编程: 响应式编程是一种编程范式,强调数据流和变化传播的概念。在iOS开发中,可以使用ReactiveCocoa或RxSwift等库实现...

    ios-动态更改navigationBar的透明度(相当于教程).zip

    在iOS开发中,导航栏(NavigationBar)是应用界面中常见且重要的组成部分,它通常用于展示当前页面的标题以及提供返回等操作。动态更改navigationBar的透明度可以为用户提供更丰富的交互体验,例如在滚动内容时逐渐...

    iOS-仿淘宝navigationBar双波纹

    本示例“iOS-仿淘宝navigationBar双波纹”就是这样一个案例,它旨在模仿淘宝应用中的导航栏波纹动画效果,提升用户体验,增强视觉吸引力。在本文中,我们将深入探讨如何实现这一功能。 首先,我们需要理解“双波纹...

    iOS-仿淘宝navigationBar双波纹(Swift版本)

    可以通过设置`fillColor`来改变波纹的颜色,通过调整`alpha`值来控制波纹的透明度变化。 在实现过程中,你可能还需要考虑以下几点: - **性能优化**:确保在绘制波纹时,避免不必要的重绘,可以利用CALayer的`...

    ios-NNNavigationBar无侵入平滑过渡.zip

    在 iOS 应用开发中,导航栏(UINavigationController 的 navigationBar)通常是固定不变的,但在某些场景下,比如进入新的界面或执行特定操作时,我们可能希望导航栏能有动态的变化,如颜色、透明度或者高度的变化,...

    IOS布局控件使用自定义UITableViewCell 欢迎界面后台获取功能等项目设计IOS源码合集.zip

    ios适用于iOS 5、iOS 6和iOS 7的自定义NavigationBar UICoreTextView-CoreText文字渲染 列表个性化列表项 利用 Core Text 实现代码根据语法高亮显示效果 利用CoreText展示连接、电话、邮箱 后台获取功能 导航及底部...

    NavigationBar

    在iOS应用开发中,`NavigationBar`是用户界面(UI)设计中的一个重要元素,它属于UIKit框架的一部分,主要用于显示应用程序的标题、返回按钮和其他导航元素。`NavigationBar`通常出现在每个屏幕的顶部,为用户提供...

    ios-彻底解决导航栏背景颜色渐变问题.zip

    在iOS开发中,导航栏(NavigationBar)是应用界面中非常重要的组成部分,它通常显示在屏幕顶部,用于展示当前页面的标题以及提供返回等操作。在实际的UI设计中,为了追求更好的视觉效果,开发者可能会遇到需要对导航...

    关于iOS中的各种颜色设置总结大全(推荐)

    在iOS开发中,颜色设置是构建用户界面时不可或缺的一部分,它可以极大地影响应用的视觉效果和用户体验。这篇总结将深入探讨如何在iOS中设置各种组件的颜色,包括导航栏、状态栏、Tabbar、Button、TextField、...

    iOS开发技巧之状态栏字体颜色的设置方法

    当我们需要将状态栏字体颜色设置为黑色时,可以使用UIStatusBarStyleLightContent。 二、在info.plist中设置状态栏字体颜色 在info.plist文件中,我们可以将View controller-based status bar appearance设为NO,...

    ios-导航栏由透明渐变颜色(仿京东).zip

    在iOS开发中,导航栏(NavigationBar)是应用中常见的组件,用于展示页面标题以及操作按钮。本示例“ios-导航栏由透明渐变颜色(仿京东)”着重讲解如何实现导航栏从透明到带有颜色的渐变效果,以及在页面刷新时导航...

    iOS导航栏拖动的渐变

    在`ViewController`中,我们需要创建一个`CAGradientLayer`实例,并设置其颜色、方向等属性。例如,我们可以创建一个从白色到蓝色的渐变: ```swift let gradientLayer = CAGradientLayer() gradientLayer.frame = ...

    swift-一个UINavigationBar分类可以动态改变导航栏的透明度以及大小

    在iOS应用开发中,UI设计和用户体验是至关重要的部分,其中`UINavigationBar`作为屏幕顶部的标准组件,用于展示应用的层级结构和标题。在Swift编程中,我们经常需要自定义`UINavigationBar`以满足特定的设计需求。本...

Global site tag (gtag.js) - Google Analytics