2016-10-07 4 views
1

Я хочу нарисовать диагональную линию с закругленными углами в поле зрения. Мой код:закругленные углы линии CAShapeLayer

class DiagonalView: UIView { 

// MARK: - Public Properties 

@IBInspectable var fillColor: UIColor = UIColor.white { 
    didSet { 
     self.diagonalLayer.strokeColor = fillColor.cgColor 
     self.redraw() 
    } 
} 

@IBInspectable var lineWidth: CGFloat = 1 { 
    didSet { 
     self.diagonalLayer.lineWidth = lineWidth 
     self.redraw() 
    } 
} 

// MARK: - Private Properties 

private var diagonalLayer: CAShapeLayer = { 
    let layer = CAShapeLayer() 
    layer.fillColor = UIColor.clear.cgColor 
    layer.strokeColor = UIColor.white.cgColor 
    layer.lineCap = kCALineCapRound 
    layer.lineWidth = 1 
    return layer 
}() 

// MARK: - Constructors 

override func awakeFromNib() { 
    super.awakeFromNib() 
    self.layer.addSublayer(self.diagonalLayer) 
    self.setupPath() 
} 

override func layoutSubviews() { 
    super.layoutSubviews() 
    self.setupPath() 
} 

// MARK: - Private methods 

private func redraw() { 
    self.setNeedsDisplay() 
} 

private func setupPath() { 
    let startPoint = CGPoint(x: self.frame.width, y: 0) 
    let endPoint = CGPoint(x: 0, y: self.frame.height) 
    let path = UIBezierPath() 
    path.move(to: startPoint) 
    path.addLine(to: endPoint) 
    path.close() 
    self.diagonalLayer.path = path.cgPath 
} 

} 

положение линии правильно. Но углы не закруглены. Результат:

enter image description here

код выглядит хорошо, но думаю, что беспорядок кое-что ... Любые предложения?

+0

Я не пробовал делать закругленные концы на слое формы раньше. Кажется странным, что у слоя формы есть стиль линии, отдельно от стиля линии линии пути. Что делать, если вы устанавливаете стиль линии с округлением на CGPath, который вы устанавливаете в свой слой формы? –

ответ

3

Я думаю, что нашел проблему. В документах говорится:

Стиль линии крышки определяет форму конечных точек открытого пути при поглаживании.

Вы закрываете свой путь. Оставьте его открытым.

+0

Хе-хе, спасибо большое! – RomanHouse

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