目標:一個正方形視圖被分割成兩個不規則視圖
兩個不規則圖形.png
代碼操作:我用了兩個view 分別繪制成了兩個不規則圖形,其中兩個不規則圖形的view實際大小是紅色區域大小
現在我讓兩個不規則圖形都向self.view.center移動到達黃色區域位置
移動后.png
注意
雖然可以通過上篇中提到的在touchBegan中判斷當前touch點是否在不規則圖形的path中但是當兩個視圖移動后 ,由于視圖實際大小都是正方形大小,所以一定有一個在上層有一個在下層,這回導致有一個圖形可以點,另一個不可點。
解決辦法
重寫view的pointinside方法這個方法決定了是否響應事件,只需在方法中判斷當前點是否在path中就可以 ,如果不在就不響應,根據事件傳遞鏈,它會自動找下一層視圖看下一層視圖是否能響應
override func point(inside point: CGPoint, with event: UIEvent?) -> Bool {
if marginalPath.contains(point)
{
return true
}
else
{
return false
}
}