从顶部缩小UIView

时间:2018-07-09 20:14:37

标签: ios swift uiview

我有一个uiview,该uiview在超级视图的顶部覆盖和阻止与我的视图的交互。我试图将被遮挡的视图放到最前面,但这也不起作用。

以下是阻止视图的代码:

self.gesstureView = UIView(frame: screenBounds)
        if let gestureView = self.gesstureView, let controlDockView = self.controlDockView, let controlTopView = self.controlTopView {
            gestureView.autoresizingMask = [.flexibleWidth, .flexibleBottomMargin]
            gestureView.frame.size.height -= controlDockView.frame.height
            gestureView.contentMode = .center
            gestureView.backgroundColor = UIColor.red
            self.view.addSubview(gestureView)

此处显示了被阻止的视图的代码:

let topHeight = screenBounds.height * 0.15
        self.controlTopView = UIView(frame: CGRect(x: 0, y: 0, width: screenBounds.width, height: topHeight))
        if let controlTopView = self.controlTopView {
            controlTopView.backgroundColor = UIColor.clear
            controlTopView.autoresizingMask = [.flexibleTopMargin]
            controlTopView.addBlurEffect()
            self.view.addSubview(controlTopView)
            // does not work view is still hidden
            self.view.bringSubview(toFront: controlTopView)

enter image description here

3 个答案:

答案 0 :(得分:1)

感谢示例代码!

问题在于将gestureView放在最前面之后,您将controlTopView添加到视图层次结构中。因此controlTopView实际上将是第二个视图,这就是为什么它不可见的原因。 Problem

要解决该问题,请最后添加controlTopView或在添加所有内容后将其放在最前面。

view.addSubview(previewView)
view.addSubview(controlDockView)
view.addSubview(gestureView)
view.addSubview(controlTopView)

Solution

答案 1 :(得分:0)

以防万一-您是否仅因为没有可见的图形就检查controlTopView是否不可见?在您的代码段中,controlTopView仅具有透明的背景色和模糊效果(对它后面的纯红色没有任何作用)。

答案 2 :(得分:0)

真正了解最新情况的最好方法是在Xcode中使用UI调试器。它会告诉您什么掩盖了什么。另外,很有可能会以您不期望的顺序绘制UIView。

  1. Run your project and click on the round circle

您应该调整大小并选择隐藏的视图。...如果它确实存在。