how to append Attributed Text String with Attributed String in Swift how to append Attributed Text String with Attributed String in Swift swift swift

how to append Attributed Text String with Attributed String in Swift


Use NSMutableAttributedString

Small example

let yourAttributes = [NSForegroundColorAttributeName: UIColor.blackColor(), NSFontAttributeName: UIFont.systemFontOfSize(15)]let yourOtherAttributes = [NSForegroundColorAttributeName: UIColor.redColor(), NSFontAttributeName: UIFont.systemFontOfSize(25)]let partOne = NSMutableAttributedString(string: "This is an example ", attributes: yourAttributes)let partTwo = NSMutableAttributedString(string: "for the combination of Attributed String!", attributes: yourOtherAttributes)let combination = NSMutableAttributedString()combination.appendAttributedString(partOne)combination.appendAttributedString(partTwo) 

Swift 3

let yourAttributes = [NSForegroundColorAttributeName: UIColor.black, NSFontAttributeName: UIFont.systemFont(ofSize: 15)]let yourOtherAttributes = [NSForegroundColorAttributeName: UIColor.red, NSFontAttributeName: UIFont.systemFont(ofSize: 25)]let partOne = NSMutableAttributedString(string: "This is an example ", attributes: yourAttributes)let partTwo = NSMutableAttributedString(string: "for the combination of Attributed String!", attributes: yourOtherAttributes)let combination = NSMutableAttributedString()combination.append(partOne)combination.append(partTwo)

combination represents your final string which contains both formattings provided by yourAttributes and yourOtherAttributes


@glace's answer, modified to avoid empty NSMutableAttributedString declaration. Valid in Swift 3.1:

let yourAttributes = [NSForegroundColorAttributeName: UIColor.blackColor(), NSFontAttributeName: UIFont.systemFontOfSize(15)]let yourOtherAttributes = [NSForegroundColorAttributeName: UIColor.redColor(), NSFontAttributeName: UIFont.systemFontOfSize(25)]let partOne = NSMutableAttributedString(string: "This is an example ", attributes: yourAttributes)let partTwo = NSMutableAttributedString(string: "for the combination of Attributed String!", attributes: yourOtherAttributes)partOne.append(partTwo)

partOne is then your final string with all the attributes. No intermediate "combiner" necessary.

Swift 4

let yourAttributes: [NSAttributedString.Key: Any] = [.foregroundColor: UIColor.black, .font: UIFont.systemFont(ofSize: 15)]let yourOtherAttributes: [NSAttributedString.Key: Any] = [.foregroundColor: UIColor.red, .font: UIFont.systemFont(ofSize: 25)]let partOne = NSMutableAttributedString(string: "This is an example ", attributes: yourAttributes)let partTwo = NSMutableAttributedString(string: "for the combination of Attributed String!", attributes: yourOtherAttributes)partOne.append(partTwo)


Swift 5

As per "glace" answer, I just update font attribute and swift version.

    let boldFontAttributes = [NSAttributedString.Key.foregroundColor: UIColor.black, NSAttributedString.Key.font: UIFont.boldSystemFont(ofSize: 17)]    let normalFontAttributes = [NSAttributedString.Key.foregroundColor: UIColor.darkGray, NSAttributedString.Key.font: UIFont.systemFont(ofSize: 15)]    let partOne = NSMutableAttributedString(string: "This is an example ", attributes: boldFontAttributes)    let partTwo = NSMutableAttributedString(string: "for the combination of Attributed String!", attributes: normalFontAttributes)    let combination = NSMutableAttributedString()        combination.append(partOne)    combination.append(partTwo)    lblUserName.attributedText = combination