如何禁用UIButton点击时的高亮效果?已尝试多方案仍未解决
iOS按钮状态切换异常排查
- 先检查按钮类型:如果Storyboard里按钮是System类型,默认会自带高亮、选中的样式效果,哪怕你设置了透明背景和0边框也会有视觉干扰,改成Custom类型试试。
- 确认
highlightedAdjustsImage的设置时机:要在viewDidLoad这类初始化方法里设置,别等到点击事件触发后才设置,晚了不会生效。另外Storyboard里如果勾选了「Adjust Image When Highlighted」,最好手动取消,避免和代码设置冲突。 - 图片切换逻辑别混着来:要么在初始化时就把Normal和Selected状态的图片都配置好(不管是代码还是Storyboard),点击时只切换
isSelected;要么完全用代码控制每次点击的图片,但要注意给对应状态设图。举个正确的代码示例:// 初始化配置(比如viewDidLoad里) button.setImage(UIImage(named: "normal_icon"), for: .normal) button.setImage(UIImage(named: "selected_icon"), for: .selected) button.highlightedAdjustsImage = false button.backgroundColor = .clear button.layer.borderWidth = 0 // IBAction里只做状态切换 @IBAction func toggleButton(_ sender: UIButton) { sender.isSelected = !sender.isSelected } - 检查IBAction里的执行顺序:如果是先改图片再切换
isSelected,可能会被系统的状态逻辑覆盖,建议先切换isSelected再设置图片(或者直接用状态对应图片的方式,不用手动改图)。
内容的提问来源于stack exchange,提问作者AppleDeveloper
相关产品推荐
相关产品推荐

