记录一下今天遇见的一个小需求!
需要做一个滚动导航栏渐变 紫色滚动白色 在白色变回紫色!
feiHua不多说!直接上代码
首先我封装了一个View 在这个View里面写一个代理 因为我的需求导航栏上面的按钮是可以点击操作的!然后在自定义一个方法用于变色!
.h文件
#import
@protocolNavigationViewDelegate
@optional
- (void)navigationViewClicked:(UIButton*)btn;
@end
@interfaceNavigationView :UIView
@property (nonatomic, assign) id<NavigationViewDelegate>delegate;
@property(nonatomic, strong) UIButton *messageButton;
@property(nonatomic, strong) UIButton *storeButton;
- (void)scrollColorChangeNavigationWithOffset:(CGPoint)Offset;
@end
.m文件核心代码
#pragma mark - 渐变nav
- (void)scrollColorChangeNavigationWithOffset:(CGPoint)Offset
{
NSLog(@"======+++++%f",Offset.y);
CAGradientLayer *gradient = [CAGradientLayer layer];
gradient.hidden=YES;
//动态获取手机导航栏高度
CGFloat statusHeight =kStatusHeight+44;
CGFloat alpha = ((statusHeight-(Offset.y<= statusHeight ? Offset.y: statusHeight))/statusHeight);
NSLog(@"_______%f",alpha);
self.backgroundColor = [[UIColor colorWithRed:130/255.0 green:3/255.0 blue:124/255.0 alpha:1]colorWithAlphaComponent:alpha];
}
在你需要变色的控制器遵循试图滚动的代理方法
#pragma mark -- 懒加载
// 创建Navigation
- (NavigationView*)navigationView
{
if (!_navigationView)
{
self.navigationView = [[NavigationView alloc]initWithFrame:CGRectMake(0,0,WIDTH,kStatusHeight+44)];
UIColor *color = [UIColor colorWithRed:126/255.0 green:100/255.0 blue:30/255.0 alpha:1];
_navigationView.backgroundColor = [color colorWithAlphaComponent:1];
_navigationView.delegate = self;
[self.navigationController.view addSubview:_navigationView];
}
return _navigationView;
}
#pragma mark - 导航栏渐变
- (void)scrollViewDidScroll:(UIScrollView*)scrollView
{
scrollViewContentOffset = scrollView.contentOffset.y;
//改变Nav颜色&图标颜色
[self.navigationView scrollColorChangeNavigationWithOffset:scrollView.contentOffset];
}
如果别的控制器不需要变色 在页面即将出现的时候添加navigationView 即将消失的时候删除就行了! (菜鸟指导,大神勿喷!)
----------------------------梦想是工程师的少年---------------------------
最后感谢你的观看!有什么不足 请指导!
网友评论