美文网首页
uibutton增加渐变色后title和image不显示问题

uibutton增加渐变色后title和image不显示问题

作者: SkySongK | 来源:发表于2019-08-29 09:47 被阅读0次

uibutton增加渐变色的时候一定要注意不能直接addsublayer,这样会导致新增加的layer在最上面,会遮挡title和image
应该使用insertSublayer将渐变色的layer增加在最下层
'''
[_adoptAnswerTagBtn.layer insertSublayer:self.gradientLayer atIndex:0];
'''
这时title就会显示出来,但,image还是会被隐藏,我猜测应该是image的层级比较靠后一些吧,具体是不是没有验证,
我强行将imageview的优先级提到最前面,使用bringSubviewToFront。
具体代码如下:
'''

  • (UIButton *)adoptAnswerTagBtn
    {
    if(!_adoptAnswerTagBtn) {
    _adoptAnswerTagBtn = [UIButton buttonWithType:UIButtonTypeCustom];
    _adoptAnswerTagBtn.titleLabel.font = [UIFont systemFontOfSize:14];
    [_adoptAnswerTagBtn setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
    [_adoptAnswerTagBtn addTarget:self action:@selector(adoptAnswerBtnClick) forControlEvents:UIControlEventTouchUpInside];
    _adoptAnswerTagBtn.layer.cornerRadius = 11.5;
    _adoptAnswerTagBtn.layer.masksToBounds = YES;
    _adoptAnswerTagBtn.size = CGSizeMake(64, 23);
    self.gradientLayer.frame = _adoptAnswerTagBtn.bounds;
    [_adoptAnswerTagBtn.layer insertSublayer:self.gradientLayer atIndex:0];
    [_adoptAnswerTagBtn setImage:[UIImage imageNamed:@"ef_fundbar_answeradopt_white"] forState:UIControlStateNormal];
    [_adoptAnswerTagBtn setTitle:@"采纳" forState:UIControlStateNormal];
    [_adoptAnswerTagBtn bringSubviewToFront:_adoptAnswerTagBtn.imageView];
    _adoptAnswerTagBtn.hidden = YES;
    }
    return _adoptAnswerTagBtn;
    }
  • (CAGradientLayer *)gradientLayer {
    if (!_gradientLayer) {
    _gradientLayer = [CAGradientLayer layer];
    _gradientLayer.colors = @[(id)[RGB_HEX(0xE8CC94) CGColor],
    (id)[RGB_HEX(0xD6AC6C) CGColor]
    ];
    _gradientLayer.startPoint = CGPointMake(0, 0);
    _gradientLayer.endPoint = CGPointMake(1.0, 1.0);
    }
    return _gradientLayer;
    }
    '''

相关文章

网友评论

      本文标题:uibutton增加渐变色后title和image不显示问题

      本文链接:https://www.haomeiwen.com/subject/gxpbectx.html