我有一个如下函数,它创建一个属性数组。我喜欢将这些属性重用于大量的文本绘制。
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 ?
我很确定这一定是可行的,但我仍然坚持使用语法和类型转换。
答案 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)