private static let boarderWidth: CGFloat = 2.0
- private let layoutManager: NSLayoutManager
- private let textContainer: NSTextContainer
+ private let layoutManager = NSLayoutManager()
+ private let textContainer = NSTextContainer()
required init(coder: NSCoder) {
-
- layoutManager = NSLayoutManager()
- textContainer = NSTextContainer()
-
+
super.init(coder: coder)
layoutManager.addTextContainer(textContainer)
let attribute = attributedString.attributes(at: 0, effectiveRange: nil)
- guard let forgroundColor = attribute[.foregroundColor] as? NSColor
- else { return }
+ guard let forgroundColor = attribute[.foregroundColor] as? NSColor else {
+
+ return
+ }
if forgroundColor == .controlTextColor {
return
}
- guard let font = attribute[.font] as? NSFont
- else { return }
+ guard let font = attribute[.font] as? NSFont else {
+
+ return
+ }
let textStorage = NSTextStorage(string: attributedString.string, attributes: attribute)
textStorage.addLayoutManager(layoutManager)
point.y -= controlView.frame.height
}
- let nsGlyph = UnsafeMutablePointer<NSGlyph>.allocate(capacity: range.length)
-
- (0..<range.length).forEach { nsGlyph[$0] = NSGlyph(glyph[$0]) }
-
let path = NSBezierPath()
path.move(to: point)
- path.appendGlyphs(nsGlyph, count: glyphLength, in: font)
+ if #available(macOS 13, *) {
+ path.append(withCGGlyphs: glyph, count: glyphLength, in: font)
+ } else {
+ let nsGlyph = UnsafeMutablePointer<NSGlyph>.allocate(capacity: range.length)
+
+ (0..<range.length).forEach { nsGlyph[$0] = NSGlyph(glyph[$0]) }
+ path.appendGlyphs(nsGlyph, count: glyphLength, in: font)
+ }
path.lineWidth = StrokeTextFieldCell.boarderWidth
path.lineJoinStyle = .roundLineJoinStyle