NSAttributedString组合2个字符串与新行

Kwn*_*ios 3 nsattributedstring ios swift swift3

我正在努力实现这种约会 日期

在集合视图单元格内.所以我在2个单独的字符串中有一天的数字和月份.

var day = example.date
var month = example.month
Run Code Online (Sandbox Code Playgroud)

以及下面的功能我正在改变它们的字体颜色等.

 func formatMonth(fullString: String, fontSize: Double) -> NSMutableAttributedString
{
    let range = (fullString as NSString).range(of: fullString)

    var myMutableString = NSMutableAttributedString()

    myMutableString = NSMutableAttributedString(string: fullString)

    myMutableString.setAttributes([NSFontAttributeName : UIFont(name: "HelveticaNeue-Bold", size: CGFloat(fontSize))!
        , NSForegroundColorAttributeName : UIColor.red], range: range)


    return myMutableString
}
func formatDay(fullString: String, fontSize: Double) -> NSMutableAttributedString
{
    let range = (fullString as NSString).range(of: fullString)

    var myMutableString = NSMutableAttributedString()

    myMutableString = NSMutableAttributedString(string: fullString)

    myMutableString.setAttributes([NSFontAttributeName : UIFont(name: "HelveticaNeue", size: CGFloat(fontSize))!
        , NSForegroundColorAttributeName : UIColor.black], range: range)


    return myMutableString
}
Run Code Online (Sandbox Code Playgroud)

变量正在变得像这样

let theMonth = formatMonth(fullString: example.month, fontSize: 15)
let theDay = formatDay(fullString: example.date, fontSize: 13)
Run Code Online (Sandbox Code Playgroud)

然后我结合他们

let combination = NSMutableAttributedString()
        combination.append(theDay)
        combination.append(theMonth)
Run Code Online (Sandbox Code Playgroud)

最后我得到了文本的组合.

date.attributedText = combination
Run Code Online (Sandbox Code Playgroud)

所以通过这种方法,我可以看到旁边的那个 8FEb

我怎样才能在它们之间添加一条断线?

Nir*_*v D 6

你可以添加\n一天.

let theDay = formatDay(fullString: "\(example.date)\n", fontSize: 13)
Run Code Online (Sandbox Code Playgroud)

您需要设置NSMutableParagraphStyle制作文字center.尝试这样的答案,你需要做一些改变,使它与Swift 3一起工作,并确保你有足够height的显示2行.

  • 您还可以在组合结果`combination.append(NSAttributedString(string:"\n"))`时添加分隔符. (7认同)