swift 实现聊天列表消息渐变消失

先上效果图
请添加图片描述
通常情况下 聊天列表是 tableview 的实现, 利用 gradienLayer 实现渐变效果。但是我们通常不直接把 gradienLayer 加在tableView ,因为那样,gradienLayer 会直接加在tableview 上且会随着滚动,而不是吸顶的。

代码

func generateTextMaskForChat() {
        var gradienLayer = CAGradientLayer.init()
        gradienLayer.startPoint = CGPoint.init(x: 0, y: 0)
        gradienLayer.endPoint = CGPoint.init(x: 0, y: 0.1)
        gradienLayer.colors = [UIColor.clear.withAlphaComponent(0).cgColor,UIColor.clear.withAlphaComponent(1.0).cgColor]
        gradienLayer.locations = [0,1.0]
        gradienLayer.rasterizationScale = UIScreen.main.scale
        gradienLayer.frame = self.view.bounds
        self.view.layer.mask = gradienLayer
    }

注意 self.view 指的是 controller 的 view,建议单独创建一个view ,tableview 加在创建的这个view 上。

======================================================

如果你一不小心 把 蒙层 加在了tableview 上,例如

- (UITableView *)tableView {
    
    if (_tableView == nil) {
        _tableView = [[UITableView alloc] initWithFrame:CGRectMake(0, 30, [UIScreen mainScreen].bounds.size.width, 400) style:UITableViewStylePlain];
        _tableView.dataSource = self;
        _tableView.delegate = self;
        _tableView.rowHeight = 200;
        
        // 渐变蒙层
        CAGradientLayer *layer = [[CAGradientLayer alloc] init];
        layer.colors = @[
                         (__bridge id)[UIColor colorWithWhite:0 alpha:0.05f].CGColor,
                         (__bridge id)[UIColor colorWithWhite:0 alpha:1.0f].CGColor
                         ];
        layer.locations = @[@0, @0.4]; // 设置颜色的范围
        layer.startPoint = CGPointMake(0, 0); // 设置颜色渐变的起点
        layer.endPoint = CGPointMake(0, 1); // 设置颜色渐变的终点,与 startPoint 形成一个颜色渐变方向
        layer.frame = _tableView.bounds; // 设置 Frame
        
        _tableView.layer.mask = layer; // 设置 mask 属性
    }
    
    return _tableView;
}

单单这样加会出现上面所说的随着滚动的情况。别着急,在代理方法里面继续设置就可以了

- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
    
    CAGradientLayer *layer = [[CAGradientLayer alloc] init];
    layer.colors = @[
                     (__bridge id)[UIColor colorWithWhite:0 alpha:0.05f].CGColor,
                     (__bridge id)[UIColor colorWithWhite:0 alpha:1.0f].CGColor
                     ];
    layer.locations = @[@0, @0.4];
    layer.startPoint = CGPointMake(0, 0);
    layer.endPoint = CGPointMake(0, 1);
    layer.frame = _tableView.bounds;
    
    _tableView.layer.mask = layer;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值