_listenButton = [UIButton buttonWithType:UIButtonTypeCustom];
CAGradientLayer *gradientLayer = [[CAGradientLayer alloc] init];
gradientLayer.frame = CGRectMake(0, 0, 58 * rectScale(), 24 * rectScale());
gradientLayer.colors = @[(__bridge id)[UIColor colorWithHexString:@"0x00D1F7"].CGColor, (__bridge id)[UIColor colorWithHexString:@"0x00A5EB"].CGColor];
gradientLayer.startPoint = CGPointMake(0, 0.5);
gradientLayer.endPoint = CGPointMake(1, 0.5);
CAShapeLayer *maskLayer = [[CAShapeLayer alloc] init];
maskLayer.lineWidth = 1;
maskLayer.path = [UIBezierPath bezierPathWithRect:CGRectMake(0, 0, 58 * rectScale(), 24 * rectScale())].CGPath;
maskLayer.fillColor = UIColor.clearColor.CGColor;
maskLayer.strokeColor = UIColor.redColor.CGColor;
gradientLayer.mask = maskLayer;
[_listenButton.layer addSublayer:gradientLayer];
[_listenButton setTitle:@"收听全部" forState:UIControlStateNormal];
_listenButton.titleLabel.font = appFont(12 * rectScale(), NO);
[_listenButton setTitleColor:[UIColor colorWithHexString:@"0x00A5EB"] forState:UIControlStateNormal];
注意:里面关键的就是这两句
maskLayer.fillColor = UIColor.clearColor.CGColor;
maskLayer.strokeColor = UIColor.redColor.CGColor;
fillcolor 一定要是clear, strokecolor 设置一个不是c lear的任意颜色
后面经过测试如果没有这两句代码,渐变的layer会完全展示