2011-07-06 44 views
22

當移動一些可可代碼可可觸摸我很失望地發現,UIBezierPath缺少「的路徑訪問元素」的方法:使UIBezierPath更像NSBezierPath與elementCount中和elementAtIndex

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

的唯一途徑在Cocoa Touch中獲得這些元素似乎是通過CGPathApply。在我嘗試將它重新創建爲UIBezierPath的子類或類別之前,我想知道這是否已經完成。有沒有人有一個想法,如果這樣的事情已經可用?

+0

我不確定,但這可能有點幫助https://github.com/kennytm/iphone-private-frameworks/blob/master/UIKit/UIBezierPath.h – iHS

回答

1

我做了一個端口https://github.com/seivan/UIBezierPathPort,但它與斯威夫特。 有一個測試套件和文檔。 從Beta 5開始工作。

從技術上講,您應該可以在Obj-C項目中使用Swift。

讓我知道你喜歡它。

1

幾個月前我遇到了同樣的問題,但當時找不到任何可用的東西。 (真相被告知,因爲走路CGPathApply對我的需求來說並不是那麼糟糕,所以我沒有很難說實話)。

施加器功能在CGPath要求每CGPathElement,這樣的元件由CGPathElementTypeCGPoints一個C-陣列。

由於CGPathElementType是隻有五個不同的值

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

枚舉你並不需要寫很多代碼做(控制)點的路徑的操作/檢查。有相同的界面可用,但會很好。