我有以下問題:我想要有常量,在parentView.subviews
數組中定義子視圖的順序。這個常量不一定是子視圖數組的索引,但它們可以。zPosition和子視圖數組
事情是這樣的:
#define VIEW1_INDEX 10 // or 0, if it's an index
#define VIEW2_INDEX 20 // or 1, if it's an index
而這將意味着,這parentView.subviews
陣列{view1, view2}
。
首先我試着使用CALayer的zPosition屬性。
假設我有parentView
的兩個子視圖:view1
和view2
,它們具有相同的大小和框架。 parentView.subviews
數組是{view1, view2}
(按此順序)。 如果我做
view2.layer.zPosition = VIEW2_INDEX;
view1.layer.zPosition = VIEW1_INDEX;
比子視圖改變顯示順序,但自來水處理次序和parentView.subviews
陣列保持不變,所以我看到view1
頂部,點擊就可以了,但是這頭通過view2
,處理這不是我所期望的。
所以我需要同時更改顯示順序和事件處理順序。
我的最好的辦法是使用代碼,與代碼送花兒給人一起確立了新的z位置,改變子視圖數組:
view2.layer.zPosition = 0;
NSUInteger* index = [parentView.subviews indexOfObject:view2];
[parentView exchangeSubviewAtIndex:0 withSubviewAtIndex:index];
但這並不似乎是最好的解決辦法。
其他的想法是用[parentView insertSubview:atIndex:]
代替[parentView addSubview]
,但比我需要確保我將在適當的順序,這是一個小討厭,因爲我在被創造了約15次的意見不同的地方。
因此,這裏是最後的問題:有沒有辦法解決問題,在開始描述?