在swift中使用属性字符串使文本变粗 [英] Making text bold using attributed string in swift

查看:296
本文介绍了在swift中使用属性字符串使文本变粗的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个这样的字符串

var str = "@text1 this is good @text1"

现在用另一个字符串替换 text1 ,比如 t 1 。我能够替换文本,但我无法加粗。我想加粗新字符串 t 1 ,以便最终输出为:

Now replace text1 with another string, say t 1. I am able to replace the text, but i am not able to bold it. I want to bold the new string t 1, so that the final output will be:

@ t 1 这很好 @t 1

我该怎么做?

我看到的所有示例都在Objective-C中,但我想在Swift中进行。

All the examples I am seeing are in Objective-C, but I want to do it in Swift.

谢谢提前。

推荐答案

这是一种在单个标签中组合粗体和普通文本的简洁方法。

Here is a neat way to make a combination of bold and normal texts in a single label.

分机:

Swift 3.0

extension NSMutableAttributedString {
    @discardableResult func bold(_ text:String) -> NSMutableAttributedString {
        let attrs:[String:AnyObject] = [NSFontAttributeName: UIFont(name: "AvenirNext-Medium", size: 12)!]
        let boldString = NSMutableAttributedString(string: text, attributes:attrs)
        self.append(boldString)
        return self
    }

    @discardableResult func normal(_ text:String)->NSMutableAttributedString {
        let normal =  NSAttributedString(string: text)
        self.append(normal)
        return self
    }
}

Swift 4

extension NSMutableAttributedString {
    @discardableResult func bold(_ text: String) -> NSMutableAttributedString {
        let attrs: [NSAttributedStringKey: Any] = [.font: UIFont(name: "AvenirNext-Medium", size: 12)!]
        let boldString = NSMutableAttributedString(string:text, attributes: attrs)
        append(boldString)

        return self
    }

    @discardableResult func normal(_ text: String) -> NSMutableAttributedString {
        let normal = NSAttributedString(string: text)
        append(normal)

        return self
    }
}

用法:

let formattedString = NSMutableAttributedString()
formattedString
    .bold("Bold Text")
    .normal(" Normal Text ")
    .bold("Bold Text")

let lbl = UILabel()
lbl.attributedText = formattedString






结果:


Bold文字普通文字粗体文字

这篇关于在swift中使用属性字符串使文本变粗的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆