iOS设置导航栏渐变色

释放双眼,带上耳机,听听看~!

以下方法可用来设置导航栏上的渐变色。

- (void)setNavigationBarBackgroundColor{

   
//  创建 UIView用来承载渐变色放置在导航栏上时需要上移20否则状态栏会露出

    UIView *myTopView = [[UIView alloc]initWithFrame:CGRectMake(0,
-20,WIDTH ,64)];







//1、window 没有设置导航控制器为根视图的情况下


#if 0 




[self.view addSubview:myTopView];

//2、设置了导航控制器为根视图。在AppDelegate中设置了







    self.window = [[UIWindow alloc]initWithFrame:[UIScreen mainScreen].bounds];

    self.window.rootViewController
= [[UINavigationController alloc]initWithRootViewController:[ViewController new]];

    self.window.backgroundColor
= [UIColorwhiteColor];

    [self.window makeKeyAndVisible];

#else  //则视图添加在navigationBar上 或者其他方法设置在navigationBar处

    [self.navigationController.navigationBar addSubview:myTopView];

#endif







    // 创建渐变色图层

    CAGradientLayer *gradientLayer= [CAGradientLayer layer];

    gradientLayer.frame       =CGRectMake(0,0,WIDTH,64);

  

    gradientLayer.colors =@[

                             (id)[UIColor yellowColor].CGColor,

                             (id)[UIColor cyanColor].CGColor

                             ];

    /* The start and end points of the gradient when drawn into the layer's

     * coordinate space. The start point corresponds to the first gradient

     * stop, the end point to the last gradient stop. Both points are

     * defined in a unit coordinate space that is then mapped to the

     * layer's bounds rectangle when drawn. (I.e. [0,0] is the bottom-left

     * corner of the layer, [1,1] is the top-right corner.) The default values

     * are [.5,0] and [.5,1] respectively. Both are animatable.

     */

    // 设置渐变方向(0~1)默认位置为 (0.5,0) 和 (0.5,1)

    gradientLayer.startPoint =CGPointMake(0,0);

    gradientLayer.endPoint =CGPointMake(0,1);

    

   
// 设置渐变色的起始位置和终止位置(颜色的分割点)

    /* An optional array of NSNumber objects defining the location of each

     * gradient stop as a value in the range [0,1]. The values must be

     * monotonically increasing. If a nil array is given, the stops are

     * assumed to spread uniformly across the [0,1] range. When rendered,

     * the colors are mapped to the output colorspace before being

     * interpolated. Defaults to nil. Animatable. */

    gradientLayer.locations =@[@(0.15f),@(0.98f)];

   
//渐变色图层的线宽

    gradientLayer.borderWidth  =0.0;

    

    // 添加图层

    [myTopView.layer addSublayer:gradientLayer];

}

 

人已赞赏
iOS文章

iOS动态监听UITextField键盘的弹出与退出

2020-3-1 7:00:04

iOS文章

Xcode工具常用快捷键

2020-3-1 11:00:08

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
有新消息 消息中心
搜索