使用addSublayer()添加CATextLayer

时间:2018-07-12 11:22:48

标签: ios iphone swift xcode layer

我写这段代码:

let myAttributes = [
    NSAttributedStringKey.font: UIFont(name: "Avenir-HeavyOblique", size: 15.0)! ,
    NSAttributedStringKey.foregroundColor: UIColor.white
]
let myAttributedString = NSAttributedString(string: textRightUpLabel!, attributes: myAttributes )
let textLayer = CATextLayer()
textLayer.string = myAttributedString
textLayer.backgroundColor = UIColor.clear.cgColor
textLayer.frame = CGRect(x: self.frame.size.width - width + textMarginRightUpLabel, y: 8, width: width, height: height)
self.layer.addSublayer(textLayer)

效果很好,但似乎在故事板上显示了两层:

storyboard image

问题是:为什么文本“ 3 DAYS LEFT”显示2次?一个在好地方,另一个在ShapeLayer之后?

感谢您的回复

1 个答案:

答案 0 :(得分:1)

将texlayer变量移出该函数,并使其成为视图的变量。

let textLayer = CATextLayer()

将其添加到图层的位置,检查该图层是否已经包含这样的textLayer,而不是一遍又一遍地添加它。抱歉,这在移动设备上有点混乱。当我回到Mac时,将对其进行检查并清理。

if let subLs = self.sublayers, subLs.contains(textLayer) == true{//do nothing
 }else{
      self.layer.addSublayer(textLayer)
  }