【发布时间】:2016-01-07 16:53:42
【问题描述】:
我正在使用 Mac OS X El Capitan 10.11.2、Xcode 7.1.1 和 iOS 7 作为手头 iOS 应用程序的部署目标。
目前,我想对 UIButton 进行样式化,使其文本和背景(颜色/图像)在禁用时变灰/降低 alpha。我开始在 .xib 编辑器中使用控件,并开始更改文本颜色、背景颜色和按钮图像。此外,在每次更改上述参数后,我也在更改启用状态。结果令人惊讶。如果按钮的标题颜色设置为默认颜色 - 蓝色,则从 Xcode 中的 .xib 编辑器禁用按钮会导致按钮标题变灰,这很好 - 无需在禁用状态下手动设置标题样式。当按钮的标题颜色设置为与默认值不同的值(比如说绿色)时,就会发生尴尬的行为 - 没有应用灰度、降低 alpha 分量或任何其他视觉禁用效果。
结果 - 如果按钮的标题颜色与默认颜色不同,则应手动应用视觉禁用。这是非常糟糕的部分行为。使用 UILabel 时没有观察到这样的情况。无论文本颜色如何,禁用标签时都会保留禁用的灰色外观。 UIButton 在给定图像时的行为与预期一样 - 当按钮被禁用时,图像的 alpha 值设置为较低的值。如果 UIButton 和 UILabel 被禁用,它们都不会改变背景颜色。
我想要的是使用 iOS 自动禁用的 UI 外观,以便在所有 UI 元素被禁用时具有视觉一致性。我不想使用:
UIButton setTitleColor: (UIColor*) color forState: (UIControlState) state;
因为不想手动指定禁用状态的颜色,而是在禁用状态下使用自动 iOS 颜色、图像等交替。
另外,指定的错误行为是否高于某些回归,或者?
【问题讨论】:
标签: ios objective-c text uibutton disabled-control