2010-01-19 96 views
1

我正在使用Atebits的ABTableViewCell子类来优化根据搜索返回的相当大的潜在数据源的滚动。 (但无论哪种方式,我会强烈建议的子类即使是最简单tableviews,他们滚动像黄油!)更改绘制的NSString的子字符串的背景颜色?

我有一个观点得出一个NSString:

[nameLabel drawInRect:nameRect withFont:nameLabelFont lineBreakMode:UILineBreakModeWordWrap]; 

我认为这将是一个很酷的功能,突出搜索词(这是“名称包含搜索文本”)。这是否像改变nameLabel子字符背后的背景颜色一样简单?

EDITS:

NSAttributedString似乎正是我要找的,但事实证明它并没有为iPhone存在。

从进一步阅读看,HTML和UIWebView似乎是这样做的......但这似乎非常昂贵。这真的是解决方案吗?

回答

0

狂野的想法 - 你的文字是单行吗?如果是这样,你可以计算“名称”的宽度,然后计算“CONTAINS”的宽度,这样你就可以知道它在屏幕上的确切位置。一旦你简单地在文本的顶部放置一个半透明的彩色的UIView。

我没有自己尝试,但这就是我会做的,如果我使其工作。

+0

我希望那样简单。我的文字大小很不一致。我实际上必须计算每个单元的高度。 – 2010-01-19 05:50:39

+0

嗯。我没有看到除了做手动wordwrap外你还可以做什么:你可以做一个二进制搜索,比较子字符串的像素长度和子字符串不同字符长度的框边界。做完这些之后,您将获得一行单行字符串文本,然后您可以回到我的第一个建议的解决方案。 这是一个真正的痛苦实施,但它会给你一个优于其他人的优势。 无论如何,我会在几天后等到苹果的事件 - 如果OS 4.0很快出来,他们可能会在那里解决您的问题。 – DenNukem 2010-01-19 17:57:01

+0

正如我所料:NSAttributedString被添加到今天宣布的SDK 3.2中。 – DenNukem 2010-01-27 20:35:27

1

嘿,看看TTStyledLabel - 它可以做你想做的。