使用 addSublayer() 添加 CATextLayer
Add CATextLayer with addSublayer()
我写了这段代码:
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)
这很好用,但它似乎增加了 2 层如何在我的情节提要中显示它:
所以问题是:为什么文本“3 DAYS LEFT”显示了 2 次?一个在好的地方,另一个在 ShapeLayer 后面?
感谢您的回复
将 texlayer 变量移出该函数并使其成为视图的变量。
let textLayer = CATextLayer()
在将它添加到图层的位置检查图层是否已经包含这样的 textLayer,而不是一遍又一遍地添加它。抱歉,这在手机上有点乱。当我回到 Mac 时会检查并清理它。
if let subLs = self.sublayers, subLs.contains(textLayer) == true{//do nothing
}else{
self.layer.addSublayer(textLayer)
}
我写了这段代码:
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)
这很好用,但它似乎增加了 2 层如何在我的情节提要中显示它:
所以问题是:为什么文本“3 DAYS LEFT”显示了 2 次?一个在好的地方,另一个在 ShapeLayer 后面?
感谢您的回复
将 texlayer 变量移出该函数并使其成为视图的变量。
let textLayer = CATextLayer()
在将它添加到图层的位置检查图层是否已经包含这样的 textLayer,而不是一遍又一遍地添加它。抱歉,这在手机上有点乱。当我回到 Mac 时会检查并清理它。
if let subLs = self.sublayers, subLs.contains(textLayer) == true{//do nothing
}else{
self.layer.addSublayer(textLayer)
}