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的属性。










