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.f
或127.0
。以上是关于UIButton setTitleColor 仅适用于预设组件值 ios7? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
UIButton setTitleColor forState 效果很好,而 setTitle 不行
UIButton setTitleColor 仅适用于预设组件值 ios7? [复制]