2019/03/30
UIViewで点線・破線を描画するExtension
Extension
enum DashedLineType {
case All,Top,Down,Right,Left
}
extension UIView {
// 点線・破線を描くメソッド
func drawDashedLine(color: UIColor, lineWidth: CGFloat, lineSize: NSNumber, spaceSize: NSNumber, type: DashedLineType) {
let dashedLineLayer: CAShapeLayer = CAShapeLayer()
dashedLineLayer.frame = self.bounds
dashedLineLayer.strokeColor = color.cgColor
dashedLineLayer.lineWidth = lineWidth
dashedLineLayer.lineDashPattern = [lineSize, spaceSize]
let path: CGMutablePath = CGMutablePath()
switch type {
case .All:
dashedLineLayer.fillColor = nil
dashedLineLayer.path = UIBezierPath(rect: dashedLineLayer.frame).cgPath
case .Top:
path.move(to: CGPoint(x: 0.0, y: 0.0))
path.addLine(to: CGPoint(x: self.frame.size.width, y: 0.0))
dashedLineLayer.path = path
case .Down:
path.move(to: CGPoint(x: 0.0, y: self.frame.size.height))
path.addLine(to: CGPoint(x: self.frame.size.width, y: self.frame.size.height))
dashedLineLayer.path = path
case .Right:
path.move(to: CGPoint(x: self.frame.size.width, y: 0.0))
path.addLine(to: CGPoint(x: self.frame.size.width, y: self.frame.size.height))
dashedLineLayer.path = path
case .Left:
path.move(to: CGPoint(x: 0.0, y: 0.0))
path.addLine(to: CGPoint(x: 0.0, y: self.frame.size.height))
dashedLineLayer.path = path
}
self.layer.addSublayer(dashedLineLayer)
}
}
使用方法
hogeView.drawDashedLine(UIColor.blueColor(), lineWidth: 2, lineSize: 3, spaceSize: 3, type: .All)