我已经在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")
}
答案 0 :(得分:1)
我只有两个没有广泛代码的解决方案。
buble
,基本上它根本就不存在。mapImageView
包含buble
的子视图,可能会删除buble
来自mapImageView
。答案 1 :(得分:1)
它没有删除,因为那不是视图 - 你之前添加过。那是另一个例子。您可以从mapImageView.subviews
访问上一个,即mapImageView的所有子视图的数组。确定要移除哪一个,并使用identifiedView.removeFromSuperview
。您可以使用标签来标识您的子视图。另一种方法是在将其添加为子视图时记住您的视图,并从superView中删除该视图。无论如何,你需要识别正确的子视图。