繁体   English   中英

使用NSMutableAttributedString在Swift中的UITextView中的粗体文本

[英]Bold part of the text in UITextView in Swift using NSMutableAttributedString

我正在尝试在UITextView中加粗文本的一部分。 这是我正在使用的代码(尽管我简化了文本):

@IBOutlet weak var textview: UITextView!

/*...*/

var str : NSMutableAttributedString = NSMutableAttributedString(string:"this is a test", attributes: [NSFontAttributeName:textview.font!] )
str.addAttribute(NSFontAttributeName, value: UIFont(name: "GillSans-Bold", size: 16)!, range: NSMakeRange(10, 4))
textview.attributedText = str

但是,它不起作用,我也不明白为什么...我所看到的所有示例都使用了此功能。 没有错误,但文本中没有任何粗体。

抱歉,如果它是重复的,我发现很多帖子都在谈论将文本以粗体显示在uitextview中,有些人使用了这种技术,但据我所知,没有任何问题。 有什么我想念的吗? 我读错了吗?

提前致谢。

原因之一可能是您使用的字体不存在或在代码中未正确命名。 这是一个巧妙的技巧,可以显示所有可用字体的列表:

//credits to Chris: http://codewithchris.com/common-mistakes-with-adding-custom-fonts-to-your-ios-app/#includefonts
func printFontFamilyNames(){

    for family: String in UIFont.familyNames()
    {
        print("\(family)")
        for names: String in UIFont.fontNamesForFamilyName(family)
        {
            print("== \(names)")
        }
    }

}

这可能无法直接回答您的问题,但我相信您会发现它会有所帮助。 还要检查此代码块顶部的链接,我从中提取了此功能。

更新

这是我编写的一段代码,可以正确更改UILabel中属性字符串的字体

if let terms = self.terms {

        let text = NSMutableAttributedString(string: terms.text!)

        let textAsString = text.string as NSString
        let range = NSMakeRange(0, textAsString.length)

        textAsString.enumerateSubstringsInRange(range, options: NSStringEnumerationOptions.ByWords, usingBlock: { (substring, substringRange, enclosingRange, _) -> () in

            if  ["Create", "Account", "Terms", "of", "Service", "Privacy", "policy"].contains(substring!) {

                if let font = UIFont(name: "OpenSans-Semibold", size: 11) {

                    text.addAttribute(NSFontAttributeName, value: font, range: substringRange)

                } else {

                    Services.log("Invalid font")

                }

            }

            //...

        })

        terms.attributedText = text

    }

注意:此代码包含项目特定的类和变量,但是我确定您可以提取所需的内容。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM