KMTabStripController.swift 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. //
  2. // KMTabStripController.swift
  3. // PDF Reader Pro
  4. //
  5. // Created by tangchao on 2024/5/16.
  6. //
  7. import Cocoa
  8. // 标签栏 【带】【标签容器】
  9. class KMTabStripController: CTTabStripController {
  10. // (新创建标签的动画优化)
  11. override func layoutTabs() {
  12. let cnt = self.viewsCount()
  13. if cnt <= 1 {
  14. super.layoutTabs()
  15. return
  16. }
  17. guard let tabView = self.view(at: cnt-1) else { // 无存在标签
  18. super.layoutTabs()
  19. return
  20. }
  21. let newTab = tabView.isHidden
  22. if newTab == false { // 不是新标签
  23. super.layoutTabs()
  24. return
  25. }
  26. // 前一个标签
  27. guard let preTabView = self.view(at: cnt-2) else {
  28. super.layoutTabs()
  29. return
  30. }
  31. if NSMinX(tabView.frame) == 0 { // 限制条件
  32. // 新标签 坐标 x 为 前一个标签的尾部(新创建标签的动画优化)
  33. tabView.frame.origin.x = NSMaxX(preTabView.frame)
  34. }
  35. super.layoutTabs()
  36. }
  37. }