2016-10-21 3 views
-1

Я создал UIView с пользовательским треугольником, используя UIBezierPath и draw (_ rect: CGRect).Рисование текста в CGPoint

Я хочу добавить текстовые метки в треугольник для каждой из трех точек на своих CGpoints.

Как это сделать?

class TriangleView: UIView { 

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

Решение основано на некоторых из ответа Mathias Кинтеро и некоторые советы 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() 
} 
+0

Вы уже указали, что вы работаете в Swift. Не нужно добавлять его в заголовок. –

+0

Добавление представлений в 'layoutSubviews' - ​​не очень хорошая идея. – Sulthan

+0

@ Sulthan, пожалуйста, не могли бы вы уточнить недостатки и предложить альтернативу? –

ответ

0

Добавление TextLabels не должно произойти как часть рисунка внутри представления. Вместо этого вы должны добавить ярлыки в виде представлений вашего представления.

addSubview (:) должен сделать трюк.

Когда дело доходит до правильного размещения этикеток, вам придется подумать о том, чтобы добавить какие-либо ограничения или вручную изменить рамку ярлыков, чтобы они находились в правильном положении.

Вы можете и должны сделать все это в viewWillLayoutSubviews() или layoutSubviews() в Swift3

+0

Спасибо, не могли бы вы рассказать о том, как я должен реализовать этот код? Включен ли этот код в TriangleView или ViewController? Кроме того, мне приходится ссылаться на систему координат супервизора или я могу использовать ту же систему координат, что и рисунок треугольника. –

+0

, вы реализуете это в методе layoutSubviews() вашего TriangleView. Вам нужно создать свой ярлык. Просто пусть label = UILabel(). Добавьте его в свое представление: so addSubview (label) –

+0

Получил! оно работает! –

Смежные вопросы