最终效果如图所示:
image.png实现代码:
很简单,写一个label的子类,重写drawText方法,在该方法内重新绘制文字即可。使用super.drawText
方法时,会触发绘制。所以需要调用两次,分别绘制白边与文字。
class NewLable: UILabel {
//修改该属性,即修改了轮廓的颜色
var outLineColor = UIColor.white
//重写该方法,修改lable文字的描绘方式
override func drawText(in rect: CGRect) {
//文字颜色
let color = textColor
//当前绘制环境
let context = UIGraphicsGetCurrentContext()
//设置宽度
context?.setLineWidth(1)
//连接处格式
context?.setLineJoin(.round)
//设置文字绘制模式为stroke
context?.setTextDrawingMode(.stroke)
//设置为白色
textColor = outLineColor
//调用父类该方法画文字
super.drawText(in: rect)
//重新设置绘制模式为fill
context?.setTextDrawingMode(.fill)
//设置原本颜色
textColor = color
//重新画文字
super.drawText(in: rect)
}
}
使用的代码:
override func viewDidLoad() {
super.viewDidLoad()
view.backgroundColor = .black
let lab = NewLable(frame: view.frame)
lab.text = "1234,这是一段文字。这是一段文字。这是一段文字。这是一段文字。这是一段文字。这是一段文字。这是一段文字。"
lab.numberOfLines = 0
lab.font = UIFont.systemFont(ofSize: 35)
lab.textColor = .black
view.addSubview(lab)
}
结果如图:
image.png
网友评论