Tencent / QMUI_iOS

QMUI iOS——致力于提高项目 UI 开发效率的解决方案
http://qmuiteam.com/ios
Other
7.05k stars 1.37k forks source link

QMUIButton 点击状态切换问题 #1394

Closed ly415925488 closed 2 years ago

ly415925488 commented 2 years ago

从normal到selected中间会经过highlighted 但是从selected回到normal的时候 貌似是selected | highlighted 两者的叠加态 adjustsButtonWhenHighlighted = NO 或者 adjustsImageWhenHighlighted = NO 无法解决这种问题 [button setImage:@"image" forState:UIControlStateSelected | UIControlStateHighlighted]; 只有这种方法才可以解决(ps:貌似系统的按钮也有这种问题) https://user-images.githubusercontent.com/17976231/164165431-9ca117c2-aa60-4b9f-a00b-d7e9bc27f778.mp4

MoLice commented 2 years ago

你是想表达什么...是希望 QMUI 处理还是单纯分享一个发现?

你描述的不是“问题”,系统设计如此——当一个 button 处于 selected 状态时,它的高亮会命中 (UIControlStateSelected|UIControlStateHighlighted),而不是 UIControlStateHighlighted,所以你确实需要专门为你的按钮的 (UIControlStateSelected|UIControlStateHighlighted) 设置一些特有的 image/title。像 checkbox 之类的东西都是要这么处理的。

ly415925488 commented 2 years ago

正因为不是问题 所以我提的只是个建议 你们不是用自己的adjustsButtonWhenHighlighted接管了系统的属性吗 能不能顺带也处理一下这种叠加的状态 O(∩_∩)O

MoLice commented 2 years ago

这个不太合适哦,adjustsButtonWhenHighlighted 的默认行为是改 alpha,alpha 严格意义上不属于按钮的“内容”,所以框架层面自动去修改,影响不大。但按你的预期,就要改到 image/title/titleColor/...,这些属于按钮的“内容”,自动去修改它的行为,始终存在某些场景下是不符合预期的,无法很好去猜测开发者的目的。所以这里不会这么处理。