簡體   English   中英

如何在NSString中加粗一個字符的多個實例?

[英]How do I bold multiple instances of a character in an NSString?

我有一個類似以下的字符串:

NSString *a = @"* This is a text String \n * Followed by another text String \n * Followed by a third"

我需要將其打印為三行。 現在,我希望其中的Asterix點加粗。 所以我嘗試了:

NSMutableAttributedString *att = [[NSMutableAttributedString alloc] initWithString:a];
[att addAddtribute:NSFontAttributeName value:SOMEBOLDFONT range:[a rangeOfString:@"*"]];

但這只會加粗第二和第三個星號。 如何使它們全部加粗?

rangeOfString僅返回一個范圍,而不是所有范圍。 循環並設置所有范圍

NSRange range = [event1 rangeOfString:@"*"];

while (range.length > 0)
{
    [att addAddtribute:NSFontAttributeName value:SOMEBOLDFONT range:[a rangeOfString:@"*"]];
     //check for the presence of * in the rest of the string
    range = [[event1 substringFromIndex:(range.location + range.length)] rangeOfString:@"*"];
}

正如其他人提到的那樣,您需要遍歷字符串以返回多個范圍。 這將工作:

NSString *a = @"* This is a text String \n* Followed by another text String \n* Followed by a third";
NSMutableAttributedString *att = [[NSMutableAttributedString alloc] initWithString:a];
NSRange foundRange = [a rangeOfString:@"*"];

while (foundRange.location != NSNotFound)
{
    [att addAttribute:NSFontAttributeName value:[UIFont boldSystemFontOfSize:20.0f] range:foundRange];

    NSRange rangeToSearch;
    rangeToSearch.location = foundRange.location + foundRange.length;
    rangeToSearch.length = a.length - rangeToSearch.location;
    foundRange = [a rangeOfString:@"*" options:0 range:rangeToSearch];
}

[[self textView] setAttributedText:att];

每次在字符串中遇到“ * ”字符時,您都需要查找。

為此,您可以使用類似此相關問題中的例程的例程。

您唯一需要從代碼中刪除此行的內容是:

[mutableAttributedString setTextColor:color range:NSMakeRange(range.location, 1)];

並將其替換為您的代碼:

 [mutableAttributedString addAttribute:NSFontAttributeName value:SOMEBOLDFONT range:NSMakeRange(range.location, 1)];

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM