2011-07-06 5 views
22

Podczas przenoszenia kodu kakao Cocoa Touch Byłem rozczarowany, aby stwierdzić, że UIBezierPath brakuje „Uzyskiwanie dostępu do elementów Path” metody:Making UIBezierPath bardziej jak NSBezierPath z elementCount i elementAtIndex

– elementCount 
– elementAtIndex: 
– elementAtIndex:associatedPoints: 
– removeAllPoints 
– setAssociatedPoints:atIndex: 

Jedynym sposobem dostać się do tych elementów w Cocoa Touch wydaje się być przez CGPathApply. Zanim spróbuję odtworzyć to jako podklasę lub kategorię UIBezierPath, zastanawiałem się, czy to już zostało zrobione. Czy ktoś ma pomysł, czy coś takiego jest już dostępne?

+0

Nie jestem pewien, ale może to być trochę pomocne https://github.com/kennytm/iphone-private-frameworks/blob/master/UIKit/UIBezierPath.h – iHS

Odpowiedz

1

Zrobiłem port na https://github.com/seivan/UIBezierPathPort, ale jest z Swift. Ma pakiet testowy i dokumentację. Działa od wersji Beta 5.

Technicznie powinieneś być w stanie używać Swiftu w projekcie Obj-C.

Daj mi znać, jak Ci się podoba.

1

Kilka miesięcy temu natknąłem się na ten sam problem i nie mogłem znaleźć niczego, co byłoby wtedy łatwo dostępne. (Prawdę powiedziawszy, ponieważ przejście na trasę CGPathApply nie było tak złe, jak na moje potrzeby, nie wyglądałem bardzo mocno, aby być szczerym).

Funkcja aplikator jest wywoływana dla każdego CGPathElement w CGPath taki element składa się CGPathElementType i C-tablicy CGPoints.

Ponieważ CGPathElementType jest enum z zaledwie pięciu różnych wartościach

enum CGPathElementType { 
    kCGPathElementMoveToPoint, 
    kCGPathElementAddLineToPoint, 
    kCGPathElementAddQuadCurveToPoint, 
    kCGPathElementAddCurveToPoint, 
    kCGPathElementCloseSubpath 
}; 

Nie trzeba pisać, że dużo kodu zrobić (kontrola) wskazują manipulacji/kontrola ścieżki. Posiadanie tego samego dostępnego interfejsu byłoby jednak miłe.