KMAdvertisementShowView.swift 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. //
  2. // KMAdvertisementShowView.swift
  3. // PDF Reader Pro
  4. //
  5. // Created by lizhe on 2023/10/26.
  6. //
  7. import Cocoa
  8. class KMAdvertisementShowView: NSView {
  9. @IBOutlet var contentView: NSView!
  10. @IBOutlet weak var iconImage: NSImageView!
  11. @IBOutlet weak var closeButton: NSButton!
  12. open var inputData: KMAdvertisementItem? {
  13. didSet {
  14. self.reloadData()
  15. }
  16. }
  17. convenience init (data: [KMAdvertisementItem], superView: NSView) {
  18. self.init(frame: superView.bounds)
  19. superView.addSubview(self)
  20. self.autoresizingMask = [.height , .width]
  21. }
  22. public override init(frame frameRect: NSRect) {
  23. super.init(frame: frameRect)
  24. initContentView()
  25. setup()
  26. }
  27. // MARK: 初始化
  28. public required init?(coder decoder: NSCoder) {
  29. super.init(coder: decoder)
  30. initContentView()
  31. setup()
  32. }
  33. private func initContentView() {
  34. //绑定xib
  35. let resource = NSNib(nibNamed: String(describing: self.classForCoder.self),
  36. bundle: Bundle(for: self.classForCoder.self))!
  37. resource.instantiate(withOwner: self, topLevelObjects: nil)
  38. addSubview(contentView)
  39. contentView.translatesAutoresizingMaskIntoConstraints = false
  40. NSLayoutConstraint.activate([
  41. contentView.topAnchor.constraint(equalTo: topAnchor),
  42. contentView.leftAnchor.constraint(equalTo: leftAnchor),
  43. contentView.rightAnchor.constraint(equalTo: rightAnchor),
  44. contentView.bottomAnchor.constraint(equalTo: bottomAnchor)])
  45. contentView.updateConstraintsForSubtreeIfNeeded()
  46. }
  47. func setup() {
  48. self.contentView.isHidden = true
  49. // self.backgroundColor(NSColor.black)
  50. }
  51. func reloadData() {
  52. guard let model = inputData?.content?.first else {
  53. self.contentView.isHidden = true
  54. return
  55. }
  56. self.contentView.isHidden = false
  57. let url = URL(string: KMAdvertisementModelTransition.transitionImagePath(image: model.image, highlight: false))
  58. self.iconImage.image = KMAdvertisementImage.imageWithURL(url: url, completion: { [weak self] image in
  59. self?.iconImage.image = image
  60. })
  61. }
  62. @IBAction func closeButtonAction(_ sender: Any) {
  63. self.removeFromSuperview()
  64. }
  65. }