我有2個視圖,我需要在特定條件下添加和移除另一個視圖。問題是,當我添加視圖,設置約束,並隱藏我不需要的,它會中斷手勢到其他視圖。在Swift中將視圖移到前面
是否有任何簡單的方法可以將一個視圖放到視圖層次結構的前面,以便用戶可以與之交互?之後,我需要對其他視圖執行相同的操作,並降低第一個視圖層次優先級。
在其他問題,我聽說有可能改變Z座標,也許有辦法做到這一點,以實現我的觀點?
我有2個視圖,我需要在特定條件下添加和移除另一個視圖。問題是,當我添加視圖,設置約束,並隱藏我不需要的,它會中斷手勢到其他視圖。在Swift中將視圖移到前面
是否有任何簡單的方法可以將一個視圖放到視圖層次結構的前面,以便用戶可以與之交互?之後,我需要對其他視圖執行相同的操作,並降低第一個視圖層次優先級。
在其他問題,我聽說有可能改變Z座標,也許有辦法做到這一點,以實現我的觀點?
您只能在CALayer
的概念中修改zPosition
。 UIView
不公開此功能。但它確實暴露了兩種方法; sendSubviewToBack:
和bringSubviewToFront:
。這需要在要移動的視圖的超視圖上調用,並將視圖作爲參數移動。
另請注意,如果您只是在頂視圖上設置userInteractionEnabled = false
,它會將觸摸傳遞給它下面的視圖。這可以節省視圖的位置。
什麼是zIndex?從來沒有聽說過......「它確實暴露了兩種方法」只有兩種?真? –
我的意思是'zPosition'。我的錯。 –
嘗試使用bringSubviewToFront:
和sendSubviewToBack:
來處理這種情況。隱藏視圖不會將其從視圖堆棧中移除,並且不允許您與視圖下方的視圖進行交互。希望這會幫助你。
使用UIView.insertSubview(view at:position)。 –