2016-09-20 4 views
2

Из учебника: http://swiftiostutorials.com/tutorial-draw-nice-triangle-view-border-cashapelayer/, я сумел создать треугольник, как:Форма треугольника с UIView при поддержке CAShapeLayer

enter image description here

class Triangle: UIView { 
    override func drawRect(rect: CGRect) { 
     let mask = CAShapeLayer() 
     mask.frame = self.layer.bounds 

     let width = self.layer.frame.size.width 
     let height = self.layer.frame.size.height 

     let path = CGPathCreateMutable() 

     CGPathMoveToPoint(path, nil, 0, 0) 
     CGPathAddLineToPoint(path, nil, width, 0) 
     CGPathAddLineToPoint(path, nil, width, height) 
     CGPathAddLineToPoint(path, nil, width/2, height) 
     CGPathAddLineToPoint(path, nil, width, height) 


     mask.path = path 
     self.layer.mask = mask 
    } 
} 

Но что я пытаюсь достичь, это треугольник, как :

enter image description here

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

ответ

3

Используйте этот путь вместо этого:

CGPathMoveToPoint(path, nil, 0, 0) 
CGPathAddLineToPoint(path, nil, width, 0) 
CGPathAddLineToPoint(path, nil, width/2, height) 
CGPathAddLineToPoint(path, nil, 0, 0) 

полный класс:

class Triangle: UIView { 
    override func drawRect(rect: CGRect) { 
     let mask = CAShapeLayer() 
     mask.frame = self.layer.bounds 

     let width = self.layer.frame.size.width 
     let height = self.layer.frame.size.height 

     let path = CGPathCreateMutable() 

     CGPathMoveToPoint(path, nil, 0, 0) 
     CGPathAddLineToPoint(path, nil, width, 0) 
     CGPathAddLineToPoint(path, nil, width/2, height) 
     CGPathAddLineToPoint(path, nil, 0, 0) 

     mask.path = path 
     self.layer.mask = mask 
    } 
} 
+0

Ааа, не заметил дополнительные 'CGPathAddLineToPoint'. Спасибо друг ! – Orange

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