Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/118.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 使用NSMutableAttributeString在Swift的UITextView中显示的文本的粗体部分_Ios_Swift_Uitextview_Nsmutableattributedstring - Fatal编程技术网

Ios 使用NSMutableAttributeString在Swift的UITextView中显示的文本的粗体部分

Ios 使用NSMutableAttributeString在Swift的UITextView中显示的文本的粗体部分,ios,swift,uitextview,nsmutableattributedstring,Ios,Swift,Uitextview,Nsmutableattributedstring,我试图在UITextView中加粗文本的一部分。 下面是我正在使用的代码(尽管我简化了文本): 但是它不起作用,我不明白为什么。。。我看到的所有例子都使用这个。没有错误,但文本中没有粗体字 很抱歉,如果它是重复的,我发现很多帖子都在谈论在uitextview中以粗体显示文本,一些帖子使用了这种技术,但据我所知,没有一个帖子有问题。我错过了什么吗?我读错什么了吗 提前感谢。一个原因可能是您使用的字体不存在或代码中没有正确命名。下面是一个显示所有可用字体列表的巧妙技巧: //credits to C

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

但是它不起作用,我不明白为什么。。。我看到的所有例子都使用这个。没有错误,但文本中没有粗体字

很抱歉,如果它是重复的,我发现很多帖子都在谈论在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

    }

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

如果您在第一行中应用
GillSans Bold
,它是否有效?Log
str
。它显示了你的期望吗?我不能重现错误,它在操场上。事实上,我只是在操场上测试了它,它在那里工作,但在我的项目中不工作。然后你可以忘记/删除这个问题。如果它工作,它工作:这段代码没有错误。事实上,它在你的应用程序中不起作用,这意味着有其他因素阻止了它的工作。您必须立即调试应用程序,以查找内容和位置。:)“GillSans Bold”是正确的名称,这不是OP的错误。字体名称是正确的,我将其用于其他用途:/(另外,您复制的代码对我不起作用,它告诉我它“不能在没有参数的情况下调用familyNames”,但是这个函数确实不需要参数,所以我不明白问题所在…调用它之前我需要做些什么吗?@Lyra这个由Armin编写的代码示例很有效,我只是在一个操场上测试过。你确定你使用的是最新版本的Xcode吗?很抱歉,我帮不上什么忙,尽管否决票有点多。我已经用我使用的一个例子更新了我的答案,这可能会给你更好的理解。请注意,我使用的是标签而不是UITextVIew。
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

    }