2015-03-21 5 views
1

У меня есть следующая функция, которая создает массив атрибутов. Мне нравится повторно использовать эти атрибуты для большого количества textdrawing.Как изменить шрифт массива атрибутов (swift, ios)

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 ? 

Я уверен, что это должно быть возможно, но я придерживаюсь синтаксиса и typeconversion.

ответ

1

Это словарь, а не массив. Также каждый раз, когда вы вызываете это fucntion, вы получаете новый экземпляр этого словаря.

Таким образом, вы можете просто назвать его однажды:

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

, а затем просто сделать:

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

Perfect. Это работает ! Это дает мне новый взгляд на словари в ios. Большое спасибо. –

0

Если вы хотите просто изменить размер существующего шрифта этот код поможет.

Сначала нужно создать переменную с атрибутами:

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

И тогда вы можете изменить размер шрифта, как это:

attributes[NSFontAttributeName] = attributes[NSFontAttributeName]?.fontWithSize(16) 
Смежные вопросы