删除与ImageView的
使用我有我的ImageView的地图画面子视图,我想为用户当前位置的红点,所以我用这个3行代码创建我上面的ImageView的红点删除与ImageView的
let overlay: UIView = UIView(frame: CGRect(x: xcorIn * 0.822, y: ycorIn * 1.03, width: 5, height: 5))
overlay.backgroundColor = UIColor(red: 255/255, green: 0/255, blue: 0/255, alpha: 1)
imageView.addSubview(overlay)
所有我要的是后红点的2秒出现就必须消失
让我试试这个
DispatchQueue.main.asyncAfter(deadline: .now() + .seconds(1), execute: {
self.imageView.delete(overlay)
})
延时功能似乎工作,但
self.imageView.delete(overlay)
此错误
终止应用程序回到我因未捕获的异常 'NSInvalidArgumentException' 的,理由是: ' - [UIImageView的删除:]: 无法识别的选择发送到实例0x7f8bef712df0'
您需要从superView
删除overlay
。你可以这样做:
DispatchQueue.main.asyncAfter(deadline: .now() + .seconds(1), execute: {
overlay.removeFromSuperview()
})
或者如果你没有覆盖全球,你可以这样做。标签添加到您的覆盖,然后做到这一点:
let overlay: UIView = UIView(frame: CGRect(x: 100, y: 100, width: 5, height: 5))
overlay.tag = 0
overlay.backgroundColor = UIColor(red: 255/255, green: 0/255, blue: 0/255, alpha: 1)
imageView.addSubview(overlay)
DispatchQueue.main.asyncAfter(deadline: .now() + .seconds(1), execute: {
for subView in self.imageView.subviews {
if subView.tag == 0 {
subView.removeFromSuperview()
}
}
})
由于imageView中没有delete
方法,所以出现该错误,但有一种方法称为removeFromSuperview
。
您打算从SuperView把
DispatchQueue.main.asyncAfter(deadline: .now() + .seconds(1), execute: {
overlay.removeFromSuperview()
})
去除重叠或:
self.overlay.hidden = true
或者试试下面的,如果你的参考,这是一个有力的参考,请务必nil
,强有力的参考:
overlay= nil
或动画不使用dispatchQueue
:
UIView.animate(withDuration: 0.5, delay: 0.3, options: [.repeat, .curveEaseOut, .autoreverse], animations: {
self.overlay.alpha = 0
}, completion: nil)
这是现在的工作由于删除了点! – Joey
您可以使用它的参考和“removeFromSuperview()”方法
let overlay: UIView = UIView(frame: CGRect(x: xcorIn * 0.822, y: ycorIn * 1.03, width: 5, height: 5))
overlay.backgroundColor = UIColor(red: 255/255, green: 0/255, blue: 0/255, alpha: 1)
imageView.addSubview(overlay)
DispatchQueue.main.asyncAfter(deadline: .now() + .seconds(1), execute: {
overlay.removeFromSuperview()
})
这是现在的工作谢谢! – Joey
这是现在的工作谢谢! – Joey
@Joey,np很乐意帮忙。 –