2010-01-19 57 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 - 它可以做你想做的。