UIButton setTitleColor 仅适用于预设组件值 ios7? [复制]

Posted

技术标签:

【中文标题】UIButton setTitleColor 仅适用于预设组件值 ios7? [复制]【英文标题】:UIButton setTitleColor only works with Preset Component Values ios7? [duplicate] 【发布时间】:2014-04-27 17:43:54 【问题描述】:

我在这里遇到了一件奇怪的事情(ios 7,Xcode 5):

如果我使用这段代码,按钮标题会改变颜色:

[self.delayButton setTitleColor:[UIColor purpleColor] forState:UIControlStateNormal];

但是,如果我使用此代码,它只会变黑:

[self.delayButton setTitleColor:[UIColor colorWithRed:128/255 green:0/255 blue:128/255 alpha:1.0] forState:UIControlStateNormal];

(仅供参考 - 这也会变黑:)

UIColor *myColor=[UIColor colorWithRed:128/255 green:0/255 blue:128/255 alpha:1.0] forState:UIControlStateNormal];
[self.delayButton setTitleColor:[UIColor myColor] forState:UIControlStateNormal];

基本上,对于“redColor”“blueColor”等预设组件值,我创建/使用的任何颜色都会变为黑色除了

有什么想法吗?

【问题讨论】:

Objective-C 基于 C,整数除法截断结果。 你是对的 - 它是重复的 - 抱歉。 【参考方案1】:

你需要像这样使用浮点值:

[UIColor colorWithRed:128.f/255 green:0.f/255 blue:128.f/255 alpha:1.0];

在您的代码中,您使用整数除法:128 / 255 结果为0。这就是为什么您会在 RGB 通道的值为零时看到黑色。

【讨论】:

仅供参考 - 号码中的 . 不需要。您可以使用128f/255 或直接使用128.0/255 有人指出这是一个重复的问题 - 抱歉。 (不过感谢您的回复!) @rmaddy 部分你是不对的:128f/255 未编译(在 Xcode 使用的 LLVM 5.1 列表中)。 糟糕——我的错。对不起。是的,必须是127.f127.0

以上是关于UIButton setTitleColor 仅适用于预设组件值 ios7? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

UIButton setTitleColor forState 效果很好,而 setTitle 不行

UIButton setTitleColor 仅适用于预设组件值 ios7? [复制]

以编程方式添加带有自动布局的uibutton

排队UIButton的CenterYAnchor到UIPageControl Swift

Xamarin.ios 基本控件

选中时更改按钮文本颜色