iOS 导航栏透明,变色动画

文章是两年前写的,一直没更新过,似乎已经不能用了,没想还有很多朋友看到了,所以找时间修改了一下。

  • UIBarMetricsCompact 改为 UIBarMetricsDefault
  • 当时写文章时还没有 iPhoneX,所以没考虑状态栏的高度,直接使用了 20。

iOS导航栏NavigationBar设置透明,以及添加变色的动画,类似知乎日报的导航栏。


iOS 导航栏透明,变色动画_第1张图片
知乎日报
透明

只需设置NavigationBar的背景图片为一张空图片即可

[self.navigationController.navigationBar setBackgroundImage:[UIImage new] forBarMetrics:UIBarMetricsDefault];

NavigationBar下边有一个ShadowImage,也可以通过设置空的UIImage设置透明。

[self.navigationController.navigationBar setShadowImage:[UIImage new]];
变色动画

在NavigationBar下插入一个view,执行动画改变这个view的透明度即可。

CGRect statusBarFrame = [UIApplication sharedApplication].statusBarFrame;
CGRect frame = self.navigationController.navigationBar.frame;
alphaView = [[UIView alloc] initWithFrame:CGRectMake(0, -statusBarFrame.size.height, frame.size.width, frame.size.height + statusBarFrame.size.height)];
alphaView.backgroundColor = [UIColor blueColor];
alphaView.userInteractionEnabled = NO;
[self.navigationController.navigationBar insertSubview: alphaView atIndex:0];

就这么简单!

你可能感兴趣的:(iOS 导航栏透明,变色动画)