Uitableview UILabel和UILabel';iOS 7中的s省略号颜色变化

Uitableview UILabel和UILabel';iOS 7中的s省略号颜色变化,uitableview,ios7,uilabel,ellipsis,textcolor,Uitableview,Ios7,Uilabel,Ellipsis,Textcolor,我看到一些非常奇怪的事情发生在我的UITableViewCells上,其中包含带省略号的UILabels(此项目仅限于iOS 7)。我在第一次加载tableView时看到省略号。然后,如果我按下一个单元格,文本+省略号颜色会发生变化,就像我在setHighlighted函数中要求它的那样。但当我释放它时(无论是在我转到details viewController并返回第一个带有表视图的viewController时,还是只是按下然后滚动以松开突出显示),省略号消失了 事实上,我发现它仍然存在,只

我看到一些非常奇怪的事情发生在我的UITableViewCells上,其中包含带省略号的UILabels(此项目仅限于iOS 7)。我在第一次加载tableView时看到省略号。然后,如果我按下一个单元格,文本+省略号颜色会发生变化,就像我在setHighlighted函数中要求它的那样。但当我释放它时(无论是在我转到details viewController并返回第一个带有表视图的viewController时,还是只是按下然后滚动以松开突出显示),省略号消失了

事实上,我发现它仍然存在,只是它在白色背景上是白色的(文本高亮显示的颜色,请参见底部的代码)。为了更好地理解,以下屏幕显示了我刚才描述的内容:

单击之前:

单击时,单元格将高亮显示:

单击后,移动到下一个viewController并按back键:

请注意,如果单击+通过滚动松开突出显示,则只有突出显示的单元格才会松开省略号。另外,在滚动tableView时,一切都正常,直到我到达它的底部,并加载列表的下一个元素-然后所有省略号保持白色(以及突出显示的字体,粗体)。这让我相信这是由于在重新加载单元格数据时所做的某些事情造成的

以下是SET的代码:

-(void)setHighlighted:(BOOL)highlighted animated:(BOOL)animated
{
    NSUInteger fontSize = _titleLabel.font.pointSize;

    [UIView animateWithDuration:(highlighted ? .2 : .5)
                          delay:0
                        options:UIViewAnimationOptionBeginFromCurrentState
                     animations:^{
                         _background.backgroundColor = (highlighted ? [UIColor blueND] : [UIColor whiteColor]);
                         _hourLabel.textColor = (highlighted ? [UIColor whiteColor] : [UIColor blackColor]);
                         _titleLabel.textColor = (highlighted ? [UIColor whiteColor] : [UIColor blackColor]);
                         _titleLabel.font = (highlighted ? [UIFont boldSystemFontOfSize:fontSize] : [UIFont systemFontOfSize:fontSize]);
                         _consoleLabel.textColor = (highlighted ? [UIColor blueND] : [UIColor whiteColor]);
                         _consoleLabel.backgroundColor = (highlighted ? [UIColor whiteColor] : [UIColor blueND]);
                     }
                     completion:nil];
}
有人知道这里发生了什么吗

提前感谢您的帮助

更新:根据Leo Natan的评论,以下是高亮显示单元格的po_titleLabel.AttributeString的结果,高亮显示后发布:

(lldb) po _titleLabel.attributedText
Mario Golf : World Tour, le Lagon Cheep Cheep en vidéo{
    NSColor = "UIDeviceWhiteColorSpace 0 1";
    NSFont = "<UICTFont: 0x1669a990> font-family: \".HelveticaNeueInterface-Regular\"; font-weight: normal; font-style: normal; font-size: 14.00pt";
    NSParagraphStyle = "Alignment 0, LineSpacing 0, ParagraphSpacing 0, ParagraphSpacingBefore 0, HeadIndent 0, TailIndent 0, FirstLineHeadIndent 0, LineHeight 0/0, LineHeightMultiple 0, LineBreakMode 4, Tabs (\n    28L,\n    56L,\n    84L,\n    112L,\n    140L,\n    168L,\n    196L,\n    224L,\n    252L,\n    280L,\n    308L,\n    336L\n), DefaultTabInterval 0, Blocks (null), Lists (null), BaseWritingDirection -1, HyphenationFactor 0, TighteningFactor 0, HeaderLevel 0";
    NSShadow = "NSShadow {0, -1} color = {(null)}";
}
(lldb)po\u titleLabel.AttributeText
马里奥高尔夫:世界巡回赛{
NSColor=“UIDeviceWhiteColorSpace 0 1”;
NSFont=“font-family:\”.helveticaneueiinterface Regular\“字体大小:正常;字体样式:正常;字体大小:14.00pt”;
NSParagraphStyle=“对齐0、行距0、段落间距0、段落间距0、段落间距0、首缩进0、尾缩进0、第一行首缩进0、线宽0/0、线宽倍数0、换行模式4、制表符(\n 28L、\n 56L、\n 84L、\n 112L、\n 140L、\n 168L、\n 196L、\n 224L、\n 252L、\n 280L、\n 308L、\n 336L\n),DefaultTabInterval 0,Blocks(null),Lists(null),BaseWritingDirection-1,断字因子0,拉紧因子0,HeaderLevel 0”;
NSShadow=“NSShadow{0,-1}color={(null)}”;
}

这可能是系统的一个错误。确保打开一个bug报告


按照评论中的设计,您可以使用标签“
highlightedTextColor
和单元格”
selectedBackgroundView
,而不是手动设置颜色。这似乎是一个苹果错误。我已经向苹果公司报告了这个bug(#19061268)


我看到的当前解决方法是使用您想要的颜色设置属性文本属性,而不是设置文本属性。

省略号是由于换行引起的吗?它是由系统添加的还是由您的代码添加的?关于这些标签,您是否在代码中的某个地方使用了
NSAttributedString
?省略号是自动的,在xib文件中使用截断尾表示换行,使用固定字体大小表示自动收缩。属性字符串呢?您是否可以复制该问题,然后在bugger
po\u titleLabel.AttributeText
中打印并在此处发布输出。您为什么手动执行此操作?您可以为标签提供普通和高亮显示的文本和背景色,当单元格高亮显示时,它将自动在它们之间交替显示。可能是您的动画块混淆了
CATextLayer
(标签的层)。嗯,因为您选择了
selectedBackgroundView
,为选定的单元格提供自定义背景颜色的背景视图。我真的认为这是一个bug,我明天有更多时间时会打开bug报告。再次感谢您帮助我们找到解决方法;)。有什么消息吗?我刚开始注意到。诚然,我们希望到目前为止大多数用户都会使用iOS 8,但仍然……也注意到了这一点。有雷达文件吗?@benuuu如果你有雷达文件,请在这里分享,这样我可以用它更新答案。UILabel上的19061268截短椭圆没有正确改变颜色。