CFAttributedString изменение размера шрифта не имеет никакого эффекта - PullRequest
0 голосов
/ 28 октября 2019

Я пытаюсь нарисовать текст, используя CoreText и CoreGraphics. Текст хорошо рисует и позиционируется, однако я не могу изменить размер шрифта. Или шрифт в этом отношении. Я попытался установить атрибутивный текст с помощью CFAttributedString напрямую и попытался изменить настройку размера шрифта CGContext. Вот мой код

//... (create CGContext)

let textAttrs = [
    kCTFontSizeAttribute as String : 18 as NSNumber
] as CFDictionary

let attrString = CFAttributedStringCreate(kCFAllocatorDefault,
                                          NSString(string: "Hello, world!"),
                                          textAttrs)

let textLine = CTLineCreateWithAttributedString(attrString!)

context.textPosition = CGPoint.zero

CTLineDraw(textLine, context.textPosition)

1 Ответ

0 голосов
/ 29 октября 2019

Проблема с определением атрибутов. Сначала я должен был определить шрифт, а затем применить шрифт как атрибут для строки.

let fontAttributes = [
    kCTFontFamilyNameAttribute : "Courier",
    kCTFontStyleNameAttribute : "Bold",
    kCTFontSizeAttribute : 18.0
] as NSDictionary

let descriptor = CTFontDescriptorCreateWithAttributes(fontAttributes)
let font = CTFontCreateWithFontDescriptor(descriptor, 0.0, nil)
let attributes = [kCTFontAttributeName : font] as CFDictionary

let attrString = CFAttributedStringCreate(kCFAllocatorDefault,
                                          "Hello, world!" as NSString,
                                          attributes)
...