关于导航栏渐变效果总结

首先我们知道navigationBar的结构图NavigationBar 结构图,所以我们要做到这种效果,最终是要改变图片的alpha。基于此有如下3种方法。
1.设置渐变图片
根据上面设置为透明的方法,我们最直接能想到的还是setBackgroundImage,根据滑动距离去设置图片的alpha。
可以根据图片alpha和color封装一个图像类别如下:
+ (UIImage*)imageWithColor:(UIColor*)color{CGRectrect =CGRectMake(0.0f,0.0f,1.0f,1.0f); UIGraphicsBeginImageContext(rect.size); CGContextRefcontext =UIGraphicsGetCurrentContext(); CGContextSetFillColorWithColor(context, [colorCGColor]); CGContextFillRect(context, rect); UIImage*image =UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); returnimage; }

2.根据运行时的特性,动态绑定可以参考动态绑定demo可参考GitHub - ltebean/LTNavigationBar: UINavigationBar Category which allows you to change its appearance dynamically
3.直接获取NavigationBar子视图ImageView,然后设置他的透明度.然后用一个全局的imageView引用他。从结构图中可以看出来,他是NavigationBar的子视图,我们可以通过for...in循环遍历navigationBar.subviews,然后获得这个view.或者直接直接获取UIImage = self.navigationController.navigationBar.subviews.firstObject;
【关于导航栏渐变效果总结】第一次写博文,若有不妥之处,望赐教!

    推荐阅读