带有CustomView的蒙版UIBarButtonItem在第一次出现后不会出现

时间:2019-07-25 16:18:24

标签: ios swift gradient

我对UIBarButtonItem有问题。我为UIButton添加了一个自定义类:

public class GradientBarButton: UIView {
    private let titleLabel = UILabel()
    private let gradientView = UIView()
    private let gradient = UIColor.Styled.gradientLayer // just CAGradientLayer with colors and locations

    public init() {
        super.init(frame: .zero)

        setup()
    }

    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)

        setup()
    }

    private func setup() {
        sv(titleLabel, gradientView)

        titleLabel.setContentCompressionResistancePriority(.init(1000), for: .horizontal)

        titleLabel
            .fillContainer()

        gradientView
            .fillContainer()

        gradientView.layer.addSublayer(gradient)
    }

    public func setTitle(_ title: String) {
        titleLabel.text = title
        titleLabel.sizeToFit()
    }

    public override func layoutSubviews() {
        super.layoutSubviews()

        gradient.frame = gradientView.frame
        gradientView.mask = titleLabel
    }
}

并使用此类的对象作为UIBarButtonItem的自定义视图。

我将此UIBarButtonItem用作navigationItem.rightBarButtonItem,并在第一个出现时得到下一个结果:

enter image description here

但是!消失并再次出现后,我得到了下一个结果:

enter image description here

为什么会发生这种情况?

0 个答案:

没有答案