简单的代码实现上滑导航栏颜色和透明度渐变效果

在开发中经常会给控制器的导航控制器隐藏起来,达到全窗口展示效果但是视图在上滑过程中又要导航栏显示出来,而且显示出来的是透明度渐变效果,这个其实实现起来并不复杂,首先在导航控制器位置添加一个颜色为透明色的背景视图,在背景视图上添加某种颜色的子视图,子视图的alpha为0,既然主视图可以滑动,主视图肯定继承与UIScrollView,所以在-(void)scrollViewDidScroll:(UIScrollView *)scrollView的代理方法中,根据滑动偏移量控制alpha的大小,也可控制颜色rgb的值来达到颜色也渐变。
-(void)createGoBackView{

UIView *navView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, 64)];
navView.backgroundColor = [UIColor clearColor];
[self.view addSubview:navView];

UIView *changeView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, 64)];
changeView.backgroundColor = [UIColor purpleColor];
changeView.alpha = 0;
self.changeView = changeView;
[self.view addSubview:changeView];

UILabel *lable = [[UILabel alloc] initWithFrame:CGRectMake(50, 25, self.view.frame.size.width-100,20)];

lable.textColor = [UIColor whiteColor];

lable.font = [UIFont systemFontOfSize:19];

lable.textAlignment = NSTextAlignmentCenter;

lable.text = @"详情";

[changeView addSubview:lable];


UIView *btnView=[[UIView alloc] initWithFrame:CGRectMake(10, 25, 100, 25)];
[self.view addSubview:btnView];

UIButton *backBtn = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 80, 35)];

backBtn.backgroundColor = [UIColor clearColor];

[backBtn setImage:[UIImage imageNamed:@"go_back"] forState:UIControlStateNormal];

backBtn.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft;

[backBtn setTitle:@"返回" forState:UIControlStateNormal];

[backBtn addTarget:self action:@selector(backAction) forControlEvents:UIControlEventTouchUpInside];

[btnView addSubview:backBtn];

}

-(void)scrollViewDidScroll:(UIScrollView *)scrollView{

if (scrollView.contentOffset.y > 117) {

    self.changeView.alpha = (scrollView.contentOffset.y-117)/150.0;

}if (scrollView.contentOffset.y <  100) {

    self.changeView.alpha = 0;

}

}

-(void)backAction{

[self.navigationController popViewControllerAnimated:YES];

}`

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值