12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- //
- // KMTableHeaderCell.swift
- // PDF Reader Pro
- //
- // Created by kdanmobile on 2023/10/26.
- //
- import Cocoa
- class KMTableHeaderCell: NSTableHeaderCell{
- override init(textCell string: String) {
- super.init(textCell: string)
- self.drawsBackground = false
- }
-
- required init(coder: NSCoder) {
- super.init(coder: coder)
- }
-
- override func draw(withFrame cellFrame: NSRect, in controlView: NSView) {
- super.draw(withFrame: cellFrame, in: controlView)
- cellFrame.fill()
- KMAppearance.Layout.l_2Color().set()
- self.drawInterior(withFrame: cellFrame, inView: controlView)
- }
-
- func drawInterior(withFrame cellFrame: NSRect, inView controlView: NSView) {
- var titleRect = self.titleRect(forBounds: cellFrame)
- titleRect.fill()
- KMAppearance.Layout.l_2Color().set()
-
- let layoutManager = NSLayoutManager()
- let lineHeight = layoutManager.defaultLineHeight(for: self.font!)
- titleRect.origin.y = (titleRect.size.height - lineHeight) / 2.0
- titleRect.size.height = lineHeight
-
- if self.alignment == NSTextAlignment.left {
- self.attributedStringValue.draw(with: titleRect, options: .usesLineFragmentOrigin)
- } else if self.alignment == NSTextAlignment.center {
- let width = self.widthOfString(self.title, withFont: self.font!)
- titleRect.origin.x += (titleRect.size.width - width) / 2.0
- titleRect.size.width = width
- self.attributedStringValue.draw(with: titleRect, options: .usesLineFragmentOrigin)
- } else {
- self.attributedStringValue.draw(with: titleRect, options: .usesLineFragmentOrigin)
- }
- }
- func drawSortIndicator(withFrame cellFrame: NSRect, inView controlView: NSView, ascending: Bool, priority: Int) {
-
- }
- override func sortIndicatorRect(forBounds rect: NSRect) -> NSRect {
- return NSRect.zero
- }
- func widthOfString(_ string: String, withFont font: NSFont) -> CGFloat {
- let attributes = [NSAttributedString.Key.font: font]
- return NSAttributedString(string: string, attributes: attributes).size().width
- }
- }
|