KMNewUserGuideCellView.swift 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. //
  2. // KMNewUserGuideCellView.swift
  3. // PDF Reader Pro
  4. //
  5. // Created by User-Tangchao on 2024/12/19.
  6. //
  7. import Cocoa
  8. class KMNewUserGuideCellView: NSTableCellView {
  9. private lazy var contentBox_: NSBox = {
  10. let view = NSBox()
  11. view.boxType = .custom
  12. view.titlePosition = .noTitle
  13. view.borderWidth = 0
  14. view.contentViewMargins = .zero
  15. return view
  16. }()
  17. private lazy var backgroundView_: NSView = {
  18. let view = NSView()
  19. view.wantsLayer = true
  20. return view
  21. }()
  22. private lazy var titleLabel_: NSTextField = {
  23. let view = NSTextField(wrappingLabelWithString: "")
  24. return view
  25. }()
  26. private lazy var subTitleLabel_: NSTextField = {
  27. let view = NSTextField(wrappingLabelWithString: "")
  28. return view
  29. }()
  30. private lazy var leftLine_: NSView = {
  31. let view = NSView()
  32. view.wantsLayer = true
  33. return view
  34. }()
  35. var contentBox: NSBox {
  36. get {
  37. return contentBox_
  38. }
  39. }
  40. var backgroundView: NSView {
  41. get {
  42. return backgroundView_
  43. }
  44. }
  45. var titleLabel: NSTextField {
  46. get {
  47. return titleLabel_
  48. }
  49. }
  50. var subTitleLabel: NSTextField {
  51. get {
  52. return subTitleLabel_
  53. }
  54. }
  55. var leftLine: NSView {
  56. get {
  57. return leftLine_
  58. }
  59. }
  60. var contentInset: NSEdgeInsets = .init(top: 0, left: 0, bottom: 0, right: 0) {
  61. didSet {
  62. leftConst_?.constant = contentInset.left
  63. rightConst_?.constant = -contentInset.right
  64. topConst_?.constant = contentInset.top
  65. bottomConst_?.constant = -contentInset.bottom
  66. }
  67. }
  68. private var leftConst_: NSLayoutConstraint?
  69. private var topConst_: NSLayoutConstraint?
  70. private var rightConst_: NSLayoutConstraint?
  71. private var bottomConst_: NSLayoutConstraint?
  72. convenience init() {
  73. self.init(frame: .init(x: 0, y: 0, width: 200, height: 30))
  74. initSubviews()
  75. }
  76. override func awakeFromNib() {
  77. super.awakeFromNib()
  78. initSubviews()
  79. }
  80. func initSubviews() {
  81. addSubview(contentBox)
  82. // contentBox.km_add_inset_constraint()
  83. leftConst_ = contentBox.km_add_leading_constraint_r()
  84. topConst_ = contentBox.km_add_top_constraint_r()
  85. rightConst_ = contentBox.km_add_trailing_constraint_r()
  86. bottomConst_ = contentBox.km_add_bottom_constraint_r()
  87. contentBox_.contentView?.addSubview(backgroundView)
  88. backgroundView.km_add_inset_constraint()
  89. contentBox.contentView?.addSubview(titleLabel)
  90. contentBox.contentView?.addSubview(subTitleLabel)
  91. contentBox.contentView?.addSubview(leftLine)
  92. titleLabel.km_add_leading_constraint(constant: 12)
  93. titleLabel.km_add_top_constraint(constant: 4)
  94. titleLabel.km_add_trailing_constraint(constant: -4)
  95. titleLabel.km_add_height_constraint(constant: 20)
  96. subTitleLabel.km_add_leading_constraint(constant: 12)
  97. subTitleLabel.km_add_top_constraint(equalTo: titleLabel, attribute: .bottom, constant: 8)
  98. subTitleLabel.km_add_trailing_constraint(constant: -4)
  99. leftLine.km_add_leading_constraint()
  100. leftLine.km_add_top_constraint()
  101. leftLine.km_add_bottom_constraint()
  102. leftLine.km_add_width_constraint(constant: 2)
  103. }
  104. }