KMLightMemberAlertView.swift 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. //
  2. // KMLightMemberAlertView.swift
  3. // PDF Reader Pro
  4. //
  5. // Created by lizhe on 2023/2/24.
  6. //
  7. import Cocoa
  8. class KMLightMemberAlertView: BaseXibView {
  9. @IBOutlet weak var titleLabel: NSTextField!
  10. @IBOutlet weak var titleContentView: NSView!
  11. var timer: DispatchSourceTimer?
  12. var result: Result = Result() {
  13. didSet {
  14. self.alphaValue = 1.0
  15. self.reloadData()
  16. }
  17. }
  18. override func draw(_ dirtyRect: NSRect) {
  19. super.draw(dirtyRect)
  20. // Drawing code here.
  21. }
  22. func setup() {
  23. self.result = Result(code: 0)
  24. }
  25. func updateUI() {
  26. self.contentView.backgroundColor(NSColor.km_init(hex: "#FDC7C6"))
  27. self.titleLabel.font = NSFont.SFProTextRegularFont(14.0)
  28. self.titleLabel.textColor = NSColor.km_init(hex: "#252629")
  29. }
  30. func reloadData() {
  31. if result.code == 200 || result.code == 0 {
  32. self.contentView.isHidden = true
  33. } else {
  34. self.contentView.isHidden = false
  35. }
  36. self.titleLabel.stringValue = NSLocalizedString(KMRequestServerErrorCodeType.typeOfMessage(type: KMRequestServerErrorCodeType(rawValue: result.code)), comment: "")
  37. self.callMethodWithDelay()
  38. }
  39. func fetchAlertHeight() -> CGFloat {
  40. let string: NSString = self.titleLabel.stringValue as NSString
  41. let paragraphStyle = NSMutableParagraphStyle()
  42. // paragraphStyle.lineHeightMultiple = 1.32
  43. paragraphStyle.alignment = .left
  44. let size: NSSize = string.boundingRect(with: NSSize(width: 356, height: 100), options: NSString.DrawingOptions(rawValue: 3), attributes: [NSAttributedString.Key.font : NSFont.SFProTextRegularFont(14), NSAttributedString.Key.paragraphStyle : paragraphStyle]).size
  45. return size.height + 32
  46. }
  47. func callMethodWithDelay() {
  48. // 取消之前的计时器
  49. timer?.cancel()
  50. // 创建一个新的计时器,延迟 2 秒
  51. timer = DispatchSource.makeTimerSource()
  52. timer?.schedule(deadline: .now() + 3, leeway: .milliseconds(10))
  53. timer?.setEventHandler(handler: { [weak self] in
  54. // 2 秒后执行的代码
  55. self?.methodToExecuteAfterDelay()
  56. })
  57. timer?.resume()
  58. }
  59. func methodToExecuteAfterDelay() {
  60. // 执行的代码
  61. self.fadeOut()
  62. }
  63. func fadeOut() {
  64. NSAnimationContext.runAnimationGroup({ (context) in
  65. context.duration = 1
  66. animator().alphaValue = 0.0
  67. }, completionHandler: nil)
  68. }
  69. func updateLanguage() {
  70. }
  71. }