2
有任何解決方法知道其中CGpath
(使用座標的陣列創建)閉合。Core-Graphics(iPhone) - 我們知道CGPath是否已關閉?
我無法找到任何合適的方法在標題CGPath
。
我希望跟蹤由用戶追蹤。如果它的一個閉環的路徑,然後我希望提取該部分從上下文。就像屏蔽或剪輯上下文,但它應該是用戶跟蹤剪輯。
謝謝!
有任何解決方法知道其中CGpath
(使用座標的陣列創建)閉合。Core-Graphics(iPhone) - 我們知道CGPath是否已關閉?
我無法找到任何合適的方法在標題CGPath
。
我希望跟蹤由用戶追蹤。如果它的一個閉環的路徑,然後我希望提取該部分從上下文。就像屏蔽或剪輯上下文,但它應該是用戶跟蹤剪輯。
謝謝!
爲防萬一你在最近4年半的時間裏停滯不前,這裏是如何在Swift 3中做到這一點。我借用沉重從this answer。我真的只是加了isClosed()
函數。
extension CGPath {
func isClosed() -> Bool {
var isClosed = false
forEach { element in
if element.type == .closeSubpath { isClosed = true }
}
return isClosed
}
func forEach(body: @convention(block) (CGPathElement) -> Void) {
typealias Body = @convention(block) (CGPathElement) -> Void
let callback: @convention(c) (UnsafeMutableRawPointer, UnsafePointer<CGPathElement>) -> Void = { (info, element) in
let body = unsafeBitCast(info, to: Body.self)
body(element.pointee)
}
print(MemoryLayout.size(ofValue: body))
let unsafeBody = unsafeBitCast(body, to: UnsafeMutableRawPointer.self)
self.apply(info: unsafeBody, function: unsafeBitCast(callback, to: CGPathApplierFunction.self))
}
}
並假設path
是CGPath
或CGMutablePath
,這裏是你如何使用它:
path.isClosed()
[CGPathContainsPoint](https://developer.apple.com/library/ios/documentation/graphicsimaging /Reference/CGPath/Reference/reference.html#//apple_ref/c/func/CGPathContainsPoint)可以幫助你! ,[A示例項目,可以幫助你(https://github.com/ole/CGPathHitTesting)和[一個關於它的討論(http://oleb.net/blog/2012/02/cgpath-hit-testing /) – Bala
親愛的巴拉,我很欣賞你的想法,但那不是我正在尋找的東西。這個鏈接也很有用,但它並沒有達到目的。無論如何感謝您的時間。 –
如果你更新和解釋你的問題更具體的關於你在找什麼,它可能會更有幫助..? – Bala