2013-02-28 51 views
0

我有一個包含幾個子視圖的視圖。我可以檢測並讓用戶僅使用UIRotationGestureRecognizer旋轉一個子視圖或包含視圖。不過,我想能夠旋轉子視圖的任何方集合,就像這樣:檢測子視圖的旋轉

初始狀態:

Initial state

旋轉方逆時針右上角

Rotating upper right square

到達這裏

To get here

我該如何實現這種行爲? 我應該如何嵌套我的視圖層次?

任何指針讚賞:)

+0

如果你可以旋轉*平方任何*方收集...我不認爲有一個單視圖層次結構,將工作。您將不得不做更復雜的事情,即旋轉過程中,將適當的變換應用到旋轉的集合中的每個圖塊上,並在旋轉完成時,根據需要重新排列數組中的圖塊。所以:每個瓷磚一個視圖/圖層就是我的建議。 – nielsbot 2013-02-28 19:20:06

+0

將旋轉的圖塊移動到您應用旋轉的臨時透明父圖層,然後在旋轉後將它們移回原始視圖中的正確位置可能會更容易一些。 – nielsbot 2013-02-28 19:21:24

回答

0

這裏就是我會做(僞):

when rotation recognized: 
    create new_layer 
    new_layer.bounds = union_rect(frames of tiles to be rotated) 
    new_layer addSublayers:(tiles to be rotated) 

while rotation in progress: 
    new_layer.transform = CATransform3DMakeRotation(angle, 0, 0, 1) 

when rotation complete: 
    (original view).layer addSublayers:(tiles to be rotated) 
    (tiles to be rotated) rearrange after rotation