2014-07-03 32 views
0

我有一個UILabel,它的外觀在IB中使用「Attributed」定義。我正在更新帶有在運行時獲取的文本的標籤。 如果我更新代碼中的標籤的.text屬性,屬性就消失了。同樣,如果我創建一個新的NSAttributedString來設置標籤的屬性文字屬性,我需要知道樣式屬性。我如何從字符串/標籤中檢索現有的樣式屬性?我認爲我們不應該在IB和代碼中兩次定義樣式屬性?如何在不影響樣式的情況下更新UILabel中的attributes字符串的文本

更新:這就是我現在要做的。它似乎工作。請注意,UILabel是UICollectionView中UICollectionViewCell的一部分。代碼有點臃腫,但它似乎工作。我使用現有字符串創建新的可變屬性字符串,然後替換字符。另外,因爲這是集合視圖界面的一部分,所以當不存在該單元格的文本時,我不能簡單地將文本或其他東西取消設置,因爲我想這也會刪除該樣式。所以我只是在沒有文字的情況下將標籤設置爲隱藏,保留樣式。

if (mytextstring != nil) { 
    NSMutableAttributedString* newthing = [[NSMutableAttributedString alloc] initWithAttributedString:cell.label.attributedText]; 
    [newthing replaceCharactersInRange:NSMakeRange(0, newthing.length) withString:mytextstring]; 
    cell.label.attributedText = newthing; 
    cell.label.hidden = NO; 
} 
else { 
    cell.label.hidden = YES; 
} 

回答

0

您可以撥打myTextField.attributedText得到NSAttributedString。使用NSMutableAttributedStringmutableString屬性修改初始字符串。

+0

'NSMutableAttributedString'對象的'mutableString'屬性是隻讀的,無法設置。 – Jonny

+0

好的,對不起,我在文檔中找不到這樣的東西。然後我會使用該類的方法,如'replaceCharactersInRange:withString:'或'deleteCharactersInRange:'。就像你已經做到了......我找不到比這更好的東西。 – Antiohia

相關問題