有趣的問題。
我不認爲有一種方法可以做的正是你在找什麼...
就像你提到的,當我們使用PaintCode,我們的圖紙定做成爲整個UIView
。
我們無法訪問其特定元素(如您的redPathView
)。
(我加入最愛這個問題的情況下,任何人都知道,如果我們其實可以。我可能是錯的。)
反正有解決方法。您可以使用PaintCode自己告訴你何時發生「碰撞」。當然,那麼你需要把所有東西都畫出來......並且實施一些對你有意義的內部控制。
例如,在下面的圖片中,我創建了這個「時鐘指針」,它具有檢測紅色物體何時觸及其他UI元素的功能(關鍵點有touchedElementID
表達式 - 觀察它如何使用「ID 「的矩形):
有一些問題,你可以用這種方法發現,例如需要知道屏幕上的其他元素,可能比較複雜的三元結構類似的確切位置:
(rotationSanitized <= -352 || rotationSanitized >= -8) ?
1 :
(rotationSanitized <= -82 && rotationSanitized >= -98) ?
2 :
(rotationSanitized <= -172 && rotationSanitized >= -188) ?
3 :
(rotationSanitized <= -262 && rotationSanitized >= -278) ?
4 : 0
另外,如何「導出」並將這些信息與Xcode中的StyleKit一起使用?
我做的訣竅是添加一個空(沒有Fill
,沒有Stroke
)在PaintCode UI元件和touchedElementID
表達結果向元件的alpha
值相關聯。
這樣我就可以在我的自定義視圖中訪問表達式,例如通過StyleKit.touchedElementID
。但是這會引入一個新問題,因爲現在每次導出時都必須更改生成的StyleKit
(兩行代碼,但仍然存在)。這是一種脆弱的解決方案。
但是,如果您沒有問題這一點,那麼它只是一個我創建了一個協議,消耗這個新的信息的事...
對於這一點,所以我ViewController
可以作爲我的自定義視圖的委託行爲,並執行無論它在PaintCode中最內部的UI元素「被觸摸」時需要做什麼。
下面是最終的結果:
最後,check this project in GitHub with all the code and samples。
確定您的解決方案可能適用於我預期的一點「每次導出時都必須更改生成的StyleKit」。我始終使用PaintCode,並且我相信我會忘記添加2行...我將嘗試另一種解決方案,也許沒有PaintCode。謝謝 – cmii
是的,我也使用PaintCode。你的擔心是可以理解的。 :-) –