2

按照蘋果的文檔,如果你不提供屬性串的給定範圍內的任何字體,默認情況下它會採取大小12如何設置默認字體NSAttributedString

現在RightNow公司的Helvetica字體我想改變這種狀況默認字體。任何人都可以建議我,我該怎麼做。

其實我想達到以下的事情:

我有HTML字符串(動態HTML從服務器推出),讓說,它爲htmlStr。在這個字符串中,可能已經爲html的不同部分設置了字體,並且也可能沒有爲該htmlStr設置任何字體。

現在,因爲我想要顯示+編輯此htmlStr,所以首先我將這個htmlStr轉換爲attributesString,然後通過爲textview設置attributedText在textview中顯示它。

現在我的問題是,如果沒有爲這個htmlStr提供任何字體,它會採用默認字體太小的尺寸和不好看。所以,我怎樣才能改變這個默認的字體爲屬性的字符串。

+0

要麼編輯HTML字符串強制字體大小,或枚舉attributedString和添加正確的字體。 – Larme

+0

如何枚舉歸檔字符串以檢查字體? –

+0

實際上html是來自任何隨機地方,所以我們不能強制他們從服務器,要麼我們可以通過添加一些默認的字體(我不知道很多關於HTML,所以要求)更新HTML或我需要更新默認字體,但我無法做到。 –

回答

2

嘗試

的Objective - C

__block BOOL found = NO; 
    NSMutableAttributedString *attrString = ... 
[attrString beginEditing]; 
    [attrString enumerateAttribute:NSFontAttributeName inRange:NSMakeRange(0, attrString.length) options:0 usingBlock:^(id value, NSRange range, BOOL *stop) { 
     if (value) { 
      UIFont *oldFont = (UIFont *)value; 
      UIFont *newFont = [oldFont fontWithSize:oldFont.pointSize * 2]; 
      [attrString addAttribute:NSFontAttributeName value:newFont range:range]; 
      found = YES; 
     } 
    }]; 
    if (!found) { 
     // No font was found - do something else? 
    } 
    [attrString endEditing]; 

夫特4

var found = false 
var attrString = NSMutableAttributedString() 

attributedText.enumerateAttribute(NSAttributedStringKey.font, in: NSMakeRange(0, attributedText.length), options: NSAttributedString.EnumerationOptions(rawValue: 0)) { (value, range, stop) in 
     if let oldFont = value as? UIFont { 
      let newFont = oldFont.withSize(oldFont.pointSize * 2) 
      attributedText.addAttribute(NSAttributedStringKey.font, value: newFont, range: range) 
      found = true 
     } 
    } 

    if !found { 
     // No font was found - do something else? 
    } 

attributedText.endEditing() 
+0

感謝@Piyush,讓我把它轉換成swift,讓我試試看,如果工作正常,那麼一定會upvote你。 –

+0

你應該給'swift'標籤問題:) :) –

+0

其實swift或objective-c無關緊要,我們只需要從一個轉換到另一個,但需要獲得解決方案 –

0
Try this one also:- 

- (NSAttributedString *) convertToAttributedString: (NSString *) string withStringToConvert: (NSString *) str2 { 
    NSMutableAttributedString *attributedStr = [[NSMutableAttributedString alloc] initWithString:string]; 
    [attributedStr addAttribute:NSForegroundColorAttributeName value:[UIColor blackColor] range:NSMakeRange(0, string.length)]; 
    [attributedStr addAttribute:NSFontAttributeName value:[UIFont fontWithName:FONT_APPLE_SD_GOTHIC_NEO_BOLD size:17.0] range:NSMakeRange(0, string.length)]; 

    [attributedStr addAttribute:NSForegroundColorAttributeName value:[UIColor darkGrayColor] range:NSMakeRange(0,str2.length)]; 
    [attributedStr addAttribute:NSFontAttributeName value: [UIFont fontWithName:FONT_APPLE_SD_GOTHIC_NEO size:17.0] range:NSMakeRange(0, str2.length)]; 

    NSMutableParagraphStyle *style = [[NSMutableParagraphStyle alloc] init]; 
    [style setLineSpacing:3]; 
    [attributedStr addAttribute:NSParagraphStyleAttributeName value:style range:NSMakeRange(0, string.length)]; 

    return attributedStr; 
}