删除子视图不起作用

时间:2017-06-11 06:46:17

标签: ios swift uiview swift3 uiimageview

我已经在UIImageView中添加了一个子视图,我尝试通过调用removeFromSuperview函数删除子视图但是它不起作用且子视图仍在那里......有什么想法吗?

以下是我的代码:

 var path = CGMutablePath()
        path.move(to: CGPoint(x: 127.5, y: 13.5))
        path.addLine(to: CGPoint(x: 165.0, y: 13.5))
        path.addLine(to: CGPoint(x: 165.0, y: 51.5))
        path.addLine(to: CGPoint(x: 127.5, y: 51.5))
        path.closeSubpath()

        var shape = CAShapeLayer()
        shape.path = path
        shape.opacity = 0.5
        shape.lineWidth = 3.0
        shape.fillColor = UIColor(hue: 0.786, saturation: 0.15, brightness: 0.89, alpha: 1.0).cgColor

        let pathClick = path.contains(location)

    if pathClick == true
            {
                let avgX = (127.5 + 127.5 + 165 + 165) / 4
                let avgY = (13.5 + 13.5 + 51.5 + 51.5) / 4
                let centerLocation = CGPoint(x: avgX, y: avgY)

                bubble.frame = CGRect(x: 0, y: 0, width: 15, height: 15)
                bubble.center = centerLocation
                mapImageView.layer.addSublayer(shape)
                mapImageView.addSubview(bubble)
                handleMore()
            }
            else
            {
                bubble.removeFromSuperview()
                print("working")
            }

2 个答案:

答案 0 :(得分:1)

我只有两个没有广泛代码的解决方案。

  1. 您可以隐藏buble,基本上它根本就不存在。
  2. mapImageView包含buble的子视图,可能会删除buble 来自mapImageView

答案 1 :(得分:1)

它没有删除,因为那不是视图 - 你之前添加过。那是另一个例子。您可以从mapImageView.subviews访问上一个,即mapImageView的所有子视图的数组。确定要移除哪一个,并使用identifiedView.removeFromSuperview。您可以使用标签来标识您的子视图。另一种方法是在将其添加为子视图时记住您的视图,并从superView中删除该视图。无论如何,你需要识别正确的子视图。