【发布时间】:2014-05-11 22:14:20
【问题描述】:
我刚从UILabel切换到UIButton,打算利用按钮的titleLabel属性来显示以前显示在按钮替换的标签中的信息。
问题是,文本不显示。我检查了按钮本身(通常具有透明背景,更改为红色以进行检查)是否出现,它是,但文本不存在。这是相关代码的示例,它与标签中的原始(工作)代码相同,仅更改如下行:
UILabel *firstLabel;
(...)
firstLabel.textColor = [UIColor blackColor];
到:
UIButton *firstLabel;
(...)
firstLabel.titleLabel.textColor = [UIColor blackColor];
为了清楚起见,这是一个完整的块:
firstLabel.frame = CGRectMake(thisRiser.bounds.origin.x, thisRiser.frame.size.height -focusBarEndHeight - 55, barWidth, 60);
firstLabel.backgroundColor = [UIColor clearColor];
firstLabel.titleLabel.textColor = [UIColor blackColor];
firstLabel.titleLabel.text = [NSString stringWithFormat:@"%@\n%.2f%%\nTime--%@",focusItemName,focusItemPercent,actualDurationFocusItem];
[firstLabel.titleLabel setFont:[UIFont boldSystemFontOfSize:12]];
firstLabel.titleLabel.numberOfLines = 0;
firstLabel.titleLabel.textAlignment = NSTextAlignmentCenter;
[firstLabel setHidden:NO];
我错过了什么?有什么想法吗?
谢谢!
更新—— 这可能与已知错误有关!
非常感谢下面的响应者。我实施了第一个建议的修复,它解决了我最初的问题,所以我的文本现在出现在标签中。但是,UIControlStateHighlighted 和 UIControlStateSelected 不起作用。
例如,此代码在单击时不会对文本产生明显影响:
firstLabel.backgroundColor = [UIColor clearColor];
[firstLabel setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
[firstLabel setTitleColor:[UIColor whiteColor] forState:UIControlStateSelected];
[firstLabel setTitleColor:[UIColor whiteColor] forState:UIControlStateHighlighted];
在 SO 上搜索了一段时间后,我得出的结论是存在一个错误(至少在 iOS 7 中),它阻止了这些方法的正常运行。不幸的是,我不够聪明,无法提供更详细的信息,但最近的很多帖子都指出了 UIControl 领域的一个主要问题。
被证明是错误的我会欣喜若狂,因为我想使用这个功能。
【问题讨论】:
-
你试过
–setTitle:forState:吗?