Xcode/Swift中设置按钮Alpha为0后无法点击,如何保留点击功能?
Swift开发透明可点击按钮解决方案
问题原因
iOS系统默认会对alpha值低于0.01的视图自动拦截用户交互,因此将按钮alpha设为0后,点击事件会被系统直接忽略。另外如果设置了isHidden = true,会直接屏蔽所有交互,无法通过其他属性恢复点击。
可用实现方案
方案1:不修改alpha属性,仅将按钮内容设为透明(最简便,兼容性最好)
只需要把按钮的可见元素全部设为透明,按钮本身的可见性不受影响,交互逻辑完全正常:button.backgroundColor = .clear button.setTitleColor(.clear, for: .normal) // 如果有图片配置也同步清空或设为透明 button.setImage(UIImage(), for: .normal)方案2:保留alpha设置,将alpha值设为0.01
系统的alpha交互拦截阈值为0.01,设置为0.01时人眼完全无法识别出可见性,同时系统不会拦截交互:button.alpha = 0.01方案3:自定义按钮重写点击检测逻辑(适用于必须设置alpha=0的场景)
继承UIButton重写hitTest方法,强制响应按钮范围内的点击事件:class CustomTransparentButton: UIButton { override func hitTest(_ point: CGPoint, with event: UIEvent?) -> UIView? { let targetView = super.hitTest(point, with: event) return targetView == nil && point(inside: point, with: event) ? self : targetView } }
内容的提问来源于stack exchange,提问作者أبو فهد Morphine pill
相关产品推荐
相关产品推荐

