美文网首页
iOS如何实现Label的文字带白边围绕

iOS如何实现Label的文字带白边围绕

作者: 狂奔的胖蜗牛 | 来源:发表于2018-05-25 17:26 被阅读266次

    最终效果如图所示:

    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

    举一反三可知,只要拥有drawText方法的控件,都可以重写该方法来达到类似目的。

    相关文章

      网友评论

          本文标题:iOS如何实现Label的文字带白边围绕

          本文链接:https://www.haomeiwen.com/subject/qdyujftx.html