如何更改属性数组的字体大小(swift,ios)

时间:2015-03-21 08:01:44

标签: ios swift

我有一个如下函数,它创建一个属性数组。我喜欢将这些属性重用于大量的文本绘制。

func getFontAttributes(fTextSize:CGFloat, color:UIColor, alignment:String) -> [NSObject : AnyObject]{


    let fieldFont = UIFont(name: "Helvetica Neue", size: fTextSize)
    var paraStyle = NSMutableParagraphStyle()

    paraStyle.lineSpacing = 6.0
    if (alignment=="left"){
    paraStyle.alignment = NSTextAlignment.Left;
    }else if(alignment=="right"){
        paraStyle.alignment = NSTextAlignment.Right;
    }else{
        paraStyle.alignment = NSTextAlignment.Center;
    }

    var skew = 0.1

    let attributes = [
        NSForegroundColorAttributeName: color,
        NSParagraphStyleAttributeName: paraStyle,
        NSObliquenessAttributeName: skew,
        NSFontAttributeName: fieldFont!
    ]
    return attributes;

}

如何在事后只更改我的属性的一个属性(例如fontsize)?我不想再次调用我的函数getFontAttributes。

let attributes=getFontAttributes(14, UIColor.darkGrayColor(),"left");
attributes.setFontSize(16); // <----- Howto do ?

我很确定这一定是可行的,但我仍然坚持使用语法和类型转换。

2 个答案:

答案 0 :(得分:1)

这是字典而不是数组。每次你调用这个函数时,你都会获得这个字典的新实例。

所以你可以打电话一次:

var attrDict = getFontAttributes(14, UIColor.darkGrayColor(),"left")

然后就这样做:

attrDict[NSFontAttributeName] = UIFont(name: "Helvetica Neue", size: newSize)

答案 1 :(得分:0)

如果您只想更改现有字体的大小,此代码将有所帮助。

首先使用属性创建变量:

var attributes = getFontAttributes(14.0, color: UIColor.darkGrayColor(), alignment: "left");

然后你可以像这样改变字体大小:

attributes[NSFontAttributeName] = attributes[NSFontAttributeName]?.fontWithSize(16)