2016-09-20 6 views
1

CoreText의 CTFontCreatePathForGlyph을 사용하여 글리프에서 CGPath를 만들었습니다. this SO post 덕택에 CGPath의 CGPoint에있는 모든 CGPoint를 배열로 사용할 수 있습니다. .filter().map()을 사용할 수 있습니다 (위치 기준과 일치하는 특정 포인트를 변환하려고합니다). 반면에, 나는 CGPath로 다시 배열을 변환 할 수 없다. 변경을 그래픽으로 렌더링하기 위해서 내가해야 할 일이있다.iOS 용 Swift에서 UIBezierPath 또는 CGPath의 점 집합을 변환하는 방법은 무엇입니까?

어떻게이 문제를 해결할 수 있습니까? 이것을 성취 할 수있는 더 좋은 방법이 있습니까?

감사합니다.

추신 : 결국 CGPaths를 UIBezierPaths로 변환 할 것이므로 가능한 경우 UIBezierMethod를 사용하십시오.

답변

1

내가 연구 한 바에 따르면 더 좋은 방법이없는 것 같아서 해결책을 찾아 냈습니다. CGPath to CGPoint function을 뒤집습니다. 다음은 개념 증명입니다 :이 할 것 당분간 있도록

let newPath = UIBezierPath() 

myPath.forEach(body: { element -> Void in 
    let point = element.points.pointee 
    switch element.type { 
    case .moveToPoint: 
     newPath.move(to: point) 
    case .addLineToPoint: 
     newPath.addLine(to: point) 
    case .addQuadCurveToPoint: 
     newPath.addQuadCurve(to: point, controlPoint: point) 
    case .addCurveToPoint: 
     newPath.addCurve(to: point, controlPoint1: point, controlPoint2: point) 
    case .closeSubpath: 
     newPath.close() 
    } 
}) 

나는 현재 작업 해요 글리프 세트, 더 커브 (8 비트)를이 없습니다. 커브로 설정된 글리프에서 시도 할 때 최종 경로는 어느 정도 날카로운 모양입니다 (FIXME : 커브 점 파싱 알고리즘 만들기)

관련 문제