在CGPoint上绘制文本

时间:2016-10-21 18:06:04

标签: ios swift swift3

我使用UIBezierPath和draw(_ rect:CGRect)创建了一个带有自定义三角形的UIView。

我想在CGpoints的三个点中为每个点添加文本标签。

我该怎么做?

class TriangleView: UIView {

    override func draw(_ rect: CGRect)
    {
        color.set()
        pathForTriangle().stroke()
    }
}

解决方案基于Mathias Quintero的一些答案以及Sulthan的一些建议(三角形点更新时的标签更新):

func addUILabels() {
    calculatePoints()
    let label1 = UILabel(frame: CGRect(origin: point1, size: CGSize(width: 100, height: 20)))
    addSubview(label1)
    label1.text = "test"
}

override func draw(_ rect: CGRect)
{
    color.set()
    pathForTriangle().stroke()
    let subViews = self.subviews
    for subview in subViews{
        subview.removeFromSuperview()
    addUILabels()
}

1 个答案:

答案 0 :(得分:0)

添加TextLabel不应作为视图内部绘图的一部分。相反,您应该将标签添加为视图的子视图。

addSubview(:)应该可以解决问题。

在正确放置标签时,您必须考虑添加一些约束或手动将标签的框架更改为正确的位置。

您可以而且应该在Swift3中的viewWillLayoutSubviews()或layoutSubviews()中完成所有这些操作