当前位置:  开发笔记 > IOS > 正文

iOS:禁用时,UIButton的标题颜色

如何解决《iOS:禁用时,UIButton的标题颜色》经验,为你挑选了1个好方法。

我将Mac OS X El Capitan 10.11.2,Xcode 7.1.1和iOS 7用作手头iOS应用程序的部署目标。

目前,我想对UIButton进行样式化,以使其文本和背景(颜色/图像)变灰/禁用时的Alpha值降低。我开始在.xib编辑器中使用控件,并开始更改文本颜色,背景颜色和按钮图像。同样,在每次更改上述参数之后,我也正在更改启用状态。结果令人惊讶。如果按钮的标题颜色设置为默认颜色-蓝色,则在Xcode中从.xib编辑器禁用按钮会导致按钮的标题显示为灰色,这很棒-无需在禁用状态下手动样式化标题。当按钮的标题颜色设置为不同于默认值(例如绿色)的值时,就会出现尴尬的行为-没有灰度,

结果-如果按钮的标题颜色与默认颜色不同,则应手动应用视觉禁用。这是非常糟糕的部分行为。使用UILabel时未观察到此类情况。无论文本颜色如何,禁用标签后都将保留禁用的灰色外观。给UIButton图像时,其行为符合预期-禁用按钮后,图像的Alpha值设置为较低的值。如果禁用了UIButton和UILabel,它们都不会更改背景颜色。

我想要的是使用iOS自动禁用的UI外观,以便所有UI元素在禁用时都具有视觉一致性。我不想使用:

UIButton setTitleColor: (UIColor*) color forState: (UIControlState) state;

因为不想手动为禁用状态指定颜色,而是在禁用状态下使用自动iOS颜色,图像等替代。

另外,指定的错误行为是否高于某种回归,还是?



1> rmaddy..:

你不能 一旦你调用setTitleColor:forState:UIControlStateNormal状态,即颜色适用于那些没有自己的特定颜色的所有状态。

的文档UIButton setTitleColor:forState:对此进行了明确说明:

通常,如果未为状态指定属性,则默认值为使用UIControlStateNormal值。如果未设置UIControlStateNormal值,则该属性默认为系统值。因此,至少应设置正常状态的值。

因此,一旦为“正常”状态设置了颜色,就需要为所有其他状态(例如“禁用”状态)设置所需的颜色。

推荐阅读
落单鸟人
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有