2017-02-21 15 views
1

Как нарисовать линию с наклонной границей, как это: oblique borderРозыгрыш линии с косыми границами

я рисовал только нормальную строку:

CGContextRef context = UIGraphicsGetCurrentContext(); 
CGContextSetLineWidth(context, 30.f); 
CGContextSetStrokeColorWithColor(context, [UIColor personalBlue].CGColor); 
CGContextMoveToPoint(context, 0.f, 0.f); 
CGContextAddLineToPoint(context,self.bounds.size.width, 0.f); 
CGContextStrokePath(context); 
+0

У вас не будет таких магических целей, как _stroking_. Один очевидный подход: нарисуйте параллелограмм и наполните его. – matt

ответ

0

Я использую CAShapeLayer:

class TriangleView: UIView { 

    override func awakeFromNib() { 
     super.awakeFromNib() 
     self.contentMode = UIViewContentMode.redraw 
    } 

    override func draw(_ 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 = CGMutablePath.init() 

     path.move(to: CGPoint(x: width, y: 0)) 
     path.addLine(to: CGPoint(x: width, y: height)) 
     path.addLine(to: CGPoint(x: 0, y: height)) 
     path.addLine(to: CGPoint(x: 0, y: 0)) 
     path.addLine(to: CGPoint(x: 0, y: 50)) 

     mask.path = path 

     self.layer.mask = mask 

     let shape = CAShapeLayer() 
     shape.frame = self.bounds 
     shape.path = path 
     shape.lineWidth = 3.0 
     shape.strokeColor = UIColor.white.cgColor 
     shape.fillColor = UIColor.white.cgColor 

     self.layer.insertSublayer(shape, at: 0) 
    } 


} 

результатом этого является:

enter image description here