我有一个自定义的UITableViewCell它使用NSAttributedString。我希望它在选中单元格时改变颜色。我如何使NSAttributedString具有与使用highlightTextColor集的UILabel相同的行为?如何设置HighlightedTextColor @ NSAttributedString
我试图在的setSelected和细胞的setHighlighted功能来改变颜色,但似乎他们被称为晚(上touchUpInside而不是着陆)
提前感谢!
我有一个自定义的UITableViewCell它使用NSAttributedString。我希望它在选中单元格时改变颜色。我如何使NSAttributedString具有与使用highlightTextColor集的UILabel相同的行为?如何设置HighlightedTextColor @ NSAttributedString
我试图在的setSelected和细胞的setHighlighted功能来改变颜色,但似乎他们被称为晚(上touchUpInside而不是着陆)
提前感谢!
的UILabel子类的解决方案
@implementation CustomLabelHighlighted
{
NSAttributedString *savedAttributedString;
}
-(void)setHighlighted:(BOOL)highlighted
{
[super setHighlighted:highlighted];
if (!highlighted)
{
[super setAttributedText:savedAttributedString];
return;
}
NSMutableAttributedString *highAttributedString = [savedAttributedString mutableCopy];
NSRange range = NSMakeRange(0, highAttributedString.string.length);
[highAttributedString addAttribute:NSForegroundColorAttributeName value:self.highlightedTextColor range:range];
[super setAttributedText:highAttributedString];
}
- (void)setAttributedText:(NSAttributedString *)attributedText
{
[super setAttributedText:attributedText];
savedAttributedString = attributedText;
}
@end
不是一个防弹解决方案,但方便,当你需要处理非常简单的用例 – marcio
通常这是很简单的检测选择/高亮显示,并根据它改变颜色。最重要的方法是:
-(void)setHighlighted:animated:
-(void)setSelected:animated:
注意重载时,你必须使用的方法与animated:
,否则将无法正常工作。
当您只想更改颜色时,最简单的解决方法是让颜色在标签上设置,而不是在字符串上设置。请注意,属性字符串仍然继承UILabel
的所有属性。
你有没有尝试过使用像这样的smth: NSAttributedString string; [string addAttribute:NSForegroundColorAttributeName value:[UIColor redColor] range:NSMakeRange(0,[string length])]; 当你的细胞被选中? – Maggie
我可以改变文本的颜色,但是我没有意识到单元格已经被选中,直到touchUp – Daniel
didSelectRowAtIndexPath - 没有运气? – Maggie