我对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,并在第一个出现时得到下一个结果:
但是!消失并再次出现后,我得到了下一个结果:
为什么会发生这种情况?