我有2个视图,我需要在特定条件下添加和移除另一个视图。问题是,当我添加视图,设置约束,并隐藏我不需要的,它会中断手势到其他视图。在Swift中将视图移到前面
是否有任何简单的方法可以将一个视图放到视图层次结构的前面,以便用户可以与之交互?之后,我需要对其他视图执行相同的操作,并降低第一个视图层次优先级。
在其他问题,我听说有可能改变Z坐标,也许有办法做到这一点,以实现我的观点?
我有2个视图,我需要在特定条件下添加和移除另一个视图。问题是,当我添加视图,设置约束,并隐藏我不需要的,它会中断手势到其他视图。在Swift中将视图移到前面
是否有任何简单的方法可以将一个视图放到视图层次结构的前面,以便用户可以与之交互?之后,我需要对其他视图执行相同的操作,并降低第一个视图层次优先级。
在其他问题,我听说有可能改变Z坐标,也许有办法做到这一点,以实现我的观点?
您只能在CALayer
的概念中修改zPosition
。 UIView
不公开此功能。但它确实暴露了两种方法; sendSubviewToBack:
和bringSubviewToFront:
。这需要在要移动的视图的超视图上调用,并将视图作为参数移动。
另请注意,如果您只是在顶视图上设置userInteractionEnabled = false
,它会将触摸传递给它下面的视图。这可以节省视图的位置。
什么是zIndex?从来没有听说过......“它确实暴露了两种方法”只有两种?真? –
我的意思是'zPosition'。我的错。 –
尝试使用bringSubviewToFront:
和sendSubviewToBack:
来处理这种情况。隐藏视图不会将其从视图堆栈中移除,并且不允许您与视图下方的视图进行交互。希望这会帮助你。
使用UIView.insertSubview(view at:position)。 –