Objective-C实现视图透明度的渐变

如题需求,试过增加渐变layer层,和添加阴影效果,但都是把原来的视图遮住了,效果都不理想。看文档中发现CALayer中有这样一个属性:

@property(nullable, strong) CALayer *mask;

把它设置为透明度渐变的效果即可实现视图的透明度的渐变需求,而且以此方法设置透明度并不会影响子视图的透明度。下面以一个图片的透明度渐变写了一个demo:
首先添加图片:

- (void)viewDidLoad {
    [super viewDidLoad];
    //为了方便查看透明度效果,给背景一个颜色
    self.view.backgroundColor = [UIColor redColor];

    _myImgView = [[UIImageView alloc]init];
    _myImgView.frame = CGRectMake(100, 100, 200, 200);
    _myImgView.image = [UIImage imageNamed:@"timg.jpg"];


    [self.view addSubview:_myImgView];

    [self changeAlpha];

}

changeAlpha的实现:

-(void)changeAlpha{

    CAGradientLayer *_gradLayer = [CAGradientLayer layer];
    NSArray *colors = [NSArray arrayWithObjects:
                       (id)[[UIColor colorWithWhite:0 alpha:0] CGColor],
                       (id)[[UIColor colorWithWhite:0 alpha:0.5] CGColor],
                       (id)[[UIColor colorWithWhite:0 alpha:1] CGColor],
                       nil];
    [_gradLayer setColors:colors];
    //渐变起止点,point表示向量
    [_gradLayer setStartPoint:CGPointMake(1.0f, 0.0f)];
    [_gradLayer setEndPoint:CGPointMake(0.0f, 0.0f)];

    [_gradLayer setFrame:_myImgView.bounds];

    [_myImgView.layer setMask:_gradLayer];

}

效果:
这里写图片描述

GitHub:https://github.com/FEverStar/AlphaChangeDemo#alphachangedemo

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值