#swift #core-text
#быстрый #основной текст
Вопрос:
Я хочу использовать CoreText для выполнения чего-либо, однако у меня есть некоторые вопросы по поводу функции: TFramesetterCreateWithAttributedString(). как мне следует поступить? Спасибо!
import UIKit
class NLUICoreTextLabel: UIView {
override init(frame: CGRect) {
super.init(frame: frame)
initparagraph()
}
func initparagraph(){
let context = UIGraphicsGetCurrentContext()
context?.translateBy(x: 0, y: bounds.size.height)
context?.scaleBy(x: 1.0, y: -1.0)
context?.textMatrix = .identity
let path = CGMutablePath()
let bounds = CGRect(x: 10.0, y: 10.0, width: 200.0, height: 200.0)
path.addRect(bounds)
let textString: CFString = "Core Text Core Text Core Text Core Text Core Text Core Text Core Text Core Text Core Text Core Text Core Text Core Text " as CFString
let attrString = CFAttributedStringCreateMutable(kCFAllocatorDefault, 0)
CFAttributedStringReplaceString(attrString, CFRangeMake(0, 0), textString)
let rgbColor = CGColorSpaceCreateDeviceRGB()
let components: Array<CGFloat> = [1.0, 0.0, 0.0, 0.8]
let red = CGColor.init(colorSpace: rgbColor, components: components)
CFAttributedStringSetAttribute(attrString, CFRangeMake(0, 12), NSAttributedString.Key.foregroundColor as CFString, red)
//There have a trouble🔽
let frameSetter = CTFramesetterCreateWithAttributedString(attrString)
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}
Сообщение об ошибке: использование неразрешенного идентификатора
‘CTFramesetterCreateWithAttributedString’CTFramesetterCreateWithAttributedString’
Ответ №1:
Вам нужно добавить
import CoreText
Редактировать:
Приведенный ниже код компилируется нормально для меня:
import Foundation
import UIKit
class NLUICoreTextLabel: UIView {
override init(frame: CGRect) {
super.init(frame: frame)
initparagraph()
}
func initparagraph(){
let context = UIGraphicsGetCurrentContext()
context?.translateBy(x: 0, y: self.bounds.size.height)
context?.scaleBy(x: 1.0, y: -1.0)
context?.textMatrix = .identity
let path = CGMutablePath()
let bounds = CGRect(x: 10.0, y: 10.0, width: 200.0, height: 200.0)
path.addRect(bounds)
let textString: CFString = "Core Text Core Text Core Text Core Text Core Text Core Text Core Text Core Text Core Text Core Text Core Text Core Text " as CFString
let attrString = CFAttributedStringCreateMutable(kCFAllocatorDefault, 0)!
CFAttributedStringReplaceString(attrString, CFRangeMake(0, 0), textString)
let rgbColor = CGColorSpaceCreateDeviceRGB()
let components: Array<CGFloat> = [1.0, 0.0, 0.0, 0.8]
let red = CGColor.init(colorSpace: rgbColor, components: components)
CFAttributedStringSetAttribute(attrString, CFRangeMake(0, 12), NSAttributedString.Key.foregroundColor as CFString, red)
//There have a trouble🔽
let frameSetter = CTFramesetterCreateWithAttributedString(attrString)
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}
Комментарии:
1. Спасибо, однако, это бесполезно, и я получу сообщение, подобное этому:
File 'NLUICoreTextLabel.swift' is part of module 'CoreText'; ignoring import
2. Извините, это не работает. Моя информация о Xcode имеет версию 10.2 (10E125), и я использую swift 5.0
3. Конечно, позвольте мне проверить с помощью swift 5
4. компиляция также хороша с 10.2. 🙂
5. Рад помочь … 🙂