Ios NSAttributedString:如何在另一个NSAttributedString中创建多行

Ios NSAttributedString:如何在另一个NSAttributedString中创建多行,ios,swift,uikit,nsattributedstring,nsparagraphstyle,Ios,Swift,Uikit,Nsattributedstring,Nsparagraphstyle,我试图在另一个文本中创建一个多行分隔文本,以实现下面的文本样式 我尝试了下面的代码来实现目标,但是代码的第三部分产生了一个问题(使用中等字体) 如果有人想知道答案,下面的代码会生成完全相同的结果: private func createLimitedDetailText() -> NSAttributedString { let totalText = "Attension, only\n 6" let paragraphStyle = NSMu

我试图在另一个文本中创建一个多行分隔文本,以实现下面的文本样式

我尝试了下面的代码来实现目标,但是代码的第三部分产生了一个问题(使用中等字体)


如果有人想知道答案,下面的代码会生成完全相同的结果:

    private func createLimitedDetailText() -> NSAttributedString {
        let totalText = "Attension, only\n 6"
        let paragraphStyle = NSMutableParagraphStyle()
        paragraphStyle.lineHeightMultiple = 0.90
        paragraphStyle.alignment = .center

        let attributedString = NSMutableAttributedString(string: totalText, attributes: [
            .font: FontFamily.OpenSans.light.font(size: 29.0),
            .foregroundColor: UIColor.white,
            NSAttributedString.Key.paragraphStyle: paragraphStyle
            ])

        attributedString.addAttribute(.font, value: FontFamily.OpenSans.extrabold.font(size: 70), range: NSRange(location: 17, length: 1))

        let paragraphStyle2 = NSMutableParagraphStyle()
        paragraphStyle2.lineHeightMultiple = 0.30
        paragraphStyle2.alignment = .center

        let attributedString2 = NSMutableAttributedString(string: "    spaces\n     left!", attributes: [
            .font: FontFamily.OpenSans.semibold.font(size: 29.0),
            .foregroundColor: UIColor.white,
            .baselineOffset: 35,
            .paragraphStyle: paragraphStyle2
            ])
        attributedString.append(attributedString2)

        return attributedString
    }

如果有人想知道答案,下面的代码会生成完全相同的结果:

    private func createLimitedDetailText() -> NSAttributedString {
        let totalText = "Attension, only\n 6"
        let paragraphStyle = NSMutableParagraphStyle()
        paragraphStyle.lineHeightMultiple = 0.90
        paragraphStyle.alignment = .center

        let attributedString = NSMutableAttributedString(string: totalText, attributes: [
            .font: FontFamily.OpenSans.light.font(size: 29.0),
            .foregroundColor: UIColor.white,
            NSAttributedString.Key.paragraphStyle: paragraphStyle
            ])

        attributedString.addAttribute(.font, value: FontFamily.OpenSans.extrabold.font(size: 70), range: NSRange(location: 17, length: 1))

        let paragraphStyle2 = NSMutableParagraphStyle()
        paragraphStyle2.lineHeightMultiple = 0.30
        paragraphStyle2.alignment = .center

        let attributedString2 = NSMutableAttributedString(string: "    spaces\n     left!", attributes: [
            .font: FontFamily.OpenSans.semibold.font(size: 29.0),
            .foregroundColor: UIColor.white,
            .baselineOffset: 35,
            .paragraphStyle: paragraphStyle2
            ])
        attributedString.append(attributedString2)

        return attributedString
    }

我认为这不可能只使用一个
NSAttributedString
。我可以使用多个NSAttributedString。目前我正在用baselineOffset做一些实验,但因为第三部分是2行,所以它会产生问题。我认为只使用一个
NSAttributedString
是不可能的。我可以使用多个NSAttributedString。目前,我正在用baselineOffset做一些实验,但因为第三部分是两条线,所以会产生一些问题。