iOS实现简易的导航栏颜色渐变实例代码

2020-01-21 07:21:53丽君
iOS,导航栏,颜色渐变,代码

UINavigationBar结构图

如何将颜色转换为图片?

直接贴代码并附上注释:


- (UIImage *)imageWithColor:(UIColor *)color {

 //创建1像素区域并开始图片绘图
 CGRect rect = CGRectMake(0, 0, 1, 1);
 UIGraphicsBeginImageContext(rect.size);

 //创建画板并填充颜色和区域
 CGContextRef context = UIGraphicsGetCurrentContext();
 CGContextSetFillColorWithColor(context, [color CGColor]);
 CGContextFillRect(context, rect);

 //从画板上获取图片并关闭图片绘图
 UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
 UIGraphicsEndImageContext();

 return image;
}

如何在滑动时为导航栏设置背景?

通常展示信息页面都存在滑动视图(UITableview 、 UICollectionView 等),这就不难想到可以在滑动视图的 scrollViewDidScroll 这个方法里根据滑动视图纵向偏移量来计算颜色的透明度的。

实现

除了以上的问题思考和基本原理,实际实现过程中还有一些需要注意的内容。

导航栏的隐藏与显示

当页面下拉时隐藏导航栏,方法有两个:


//方法一:
[self.navigationController setNavigationBarHidden:YES];

//方法二:
self.navigationController.navigationBar.hidden = YES;

以上两个方法效果相同,区别在于一个是操作 navigationController 的属性(navigationBar 是 navigationController的一个属性),一个是操作navigationBar的属性。