用 UILabel 进行图文混排

要学习图文混排首先要了解AttributedString属性,AttributedString分为NSMutableAttributedStringNSAttributedString。它是一个管理字符串以及与该字符串中的单个字符或某些范围的字符串相关的属性。通常这个属性我们可以控制字符串的字体样式、大小、颜色、背景色、行距、字距、段落、下划线、删除线、文本附件等等。

有此属性的控件有UILabelUITextFieldUITextView,今天通过设置UILabelAttributedString属性来学习一下如何进行简单的图文混排。比较简单,就直接贴出代码:

class UILabelViewController: UIViewController {
    
    @IBOutlet weak var contentLabel: UILabel!

    let contentString = "作者写在书后:时间是2003年或2004年,季节可能是夏末也可能是秋初。\n详细的时间和季节记不清了,只记得我一个人在午后的北京街头闲逛,碰到一群大学生,约二十个,男女都有,在路旁树荫下一米高左右的矮墙上坐成一列。\n他们悠闲地晃动双腿,谈笑声此起彼落。我从他们面前走过,不禁想起过去也曾拥有类似的青春。\n………"
    
    override func viewDidLoad() {
        super.viewDidLoad()

        // 创建富文本字符串
        let attributedText = NSMutableAttributedString(string: contentString)
        
        // 图片附件
        let imageAttachment = NSTextAttachment()
        let image = UIImage(named: "nuannuan0.jpg")
        imageAttachment.image = image
        
        // 设置图片显示的宽度和 UILabel 的宽度一致
        let imageWidth = contentLabel.frame.width
        let imageHeight = image!.size.height / image!.size.width * imageWidth
        imageAttachment.bounds = CGRect(x: 0, y: 0, width: imageWidth, height: imageHeight)
        
        // 将带图片附件的富文本字符串插入到指定位置
        attributedText.insert(NSAttributedString(attachment: imageAttachment), at: 7)

        contentLabel.attributedText = attributedText
    }
}
用 UILabel 进行图文混排_第1张图片
Paste_Image.png

你可能感兴趣的:(用 UILabel 进行图文混排)