我需要在這樣的標籤來格式化文本:一個標籤,兩種不同的字體?
用戶名:從這個用戶的一些文字。這將創建額外的文本行
,這些文本將繼續在
之上。
其中「username」是粗體。這將進入UILabel,它位於自定義表格單元格中。有沒有辦法得到這種類型的佈局?
我需要在這樣的標籤來格式化文本:一個標籤,兩種不同的字體?
用戶名:從這個用戶的一些文字。這將創建額外的文本行
,這些文本將繼續在
之上。
其中「username」是粗體。這將進入UILabel,它位於自定義表格單元格中。有沒有辦法得到這種類型的佈局?
對於這個相對簡單的情況,您可能會僞造它。用粗體用戶名錶示一個標籤,用純文本標記在同一位置。在純文本之前插入足夠的空格爲用戶名留出空間。您可以使用UIStringDrawing方法來測量粗體文本和空格。
CGSize usernameSize = [theUsername sizeWithFont:theBoldUsernameFont];
CGSize spaceSize = [@" " sizeWithFont:thePlainCommentFont];
NSString *indentedComment = [NSString stringWithFormat:@"%*s%@" , (int)ceil(usernameSize.width/spaceSize.width) , "" , theComment];
您需要使用UIWebView或CoreText來完成這種高級文本佈局。 Web視圖有很多開銷,但是最靈活,並且不能在UITableView單元中有效地使用它。 CoreText是低層次的,沒有很好的文檔。你可以放棄表格視圖,只需在Web視圖中用CSS和HTML佈局表格,這就是我的做法。
您仍然可以使用UITableViewCell,但讓單元格使用UIWebView子視圖。使用聰明的setter方法設置自定義單元格子類,使您可以將nsstrings發送到該方法,並將它們轉換爲相當格式化的視圖。
你知道,就在你發佈之前,這正是我開始做的。這只是計算用戶名文本中空格的數量的問題。 – 4thSpace 2010-04-27 03:56:52