2017-02-07 2 views
0

Я работаю с быстрым 2.2, и я имею дело с такой проблемой: У меня есть массив объектов UIBezier, и мне нужно создать штрих для них как один путь.Как создать несколько путей из нескольких BezierPath

У меня была специальная функция для этого, но плюсы этого подхода, что он создал несколько слоев. Это идет вместе с моими требованиями, как мне нужно один слой

func createStroke(line: UIBezierPath) { 

     self.currentPath = CAShapeLayer() 
     currentPath.path = line.CGPath 
     currentPath.strokeColor = UIColor.blackColor().CGColor 
     currentPath.fillColor = UIColor.clearColor().CGColor 
     currentPath.lineWidth = 1 
     self.view.layer.addSublayer(currentPath) 

    } 

Что такое лучший способ создать несколько путь из массива моих линий Безье? Первая идея - создать цикл цикла, но я считаю, что это не чистый путь.

+0

Вы можете создать один путь, добавив все пути безье, а затем установить результат как путь CAShapeLayer. Дополнительная информация: https://developer.apple.com/reference/uikit/uibezierpath/1624377-append – aleberguer

ответ

3

Вы можете сделать что-то вроде этого (это площадка код):

let myView = UIView(frame:CGRect(x: 100, y: 100, width: 250, height: 250)) 
myView.backgroundColor = UIColor.white 
let myLayer = CAShapeLayer() 

func createPath(i: Int) -> UIBezierPath { 
    let path = UIBezierPath() 
    path.move(to: CGPoint(x: 2*i, y: 9*i - 4)) 
    path.addLine(to: CGPoint(x: 10 + 5*i, y: 20 + 4*i)) 

    return path 
} 

func createStroke(line: UIBezierPath) { 
    myLayer.path = line.cgPath 
    myLayer.strokeColor = UIColor.black.cgColor 
    myLayer.fillColor = UIColor.black.cgColor 
    myLayer.lineWidth = 1 
} 

let paths = [createPath(i: 0), createPath(i: 15), createPath(i: 8), createPath(i: 10)] 
let myPath = UIBezierPath() 
for path in paths { 
    myPath.append(path) // THIS IS THE IMPORTANT PART 
} 
createStroke(line: myPath) 
myView.layer.addSublayer(myLayer) 

myView 

вот как это выглядит в игровой площадки:

playground exemple

Вы будете иметь только один слой таким способом

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