HDEmptyBaseView.swift 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204
  1. //
  2. // HDEmptyBaseView.swift
  3. // HDEmptyViewDemo
  4. //
  5. // Created by liuyi on 2018/5/18.
  6. // Copyright © 2018年 liuyi. All rights reserved.
  7. //
  8. import UIKit
  9. import Foundation
  10. public typealias HDTapBlock = () -> ()
  11. public class HDEmptyBaseView: UIView {
  12. //点击空白区域
  13. var tapContentViewBlock: HDTapBlock?
  14. //点击刷新按钮
  15. var _btnClickBlock: HDTapBlock?
  16. //
  17. var contentView: UIView! = UIView()
  18. //图片名字
  19. var _imageStr: NSString? {
  20. didSet {
  21. setupSubviews()
  22. }
  23. }
  24. //标题
  25. var _titleStr: NSString? {
  26. didSet {
  27. setupSubviews()
  28. }
  29. }
  30. //详情
  31. var _detailStr: NSString?
  32. {
  33. didSet {
  34. setupSubviews()
  35. }
  36. }
  37. //按钮标题
  38. var _btnTitleStr: NSString?
  39. {
  40. didSet {
  41. setupSubviews()
  42. }
  43. }
  44. var _target: AnyObject?
  45. var _selector: Selector?
  46. //自定义视图界面
  47. var _customView: UIView?
  48. //是否自动显隐EmptyView
  49. var autoShowEmptyView: Bool = true
  50. //MARK: -- 初始化方法
  51. public override init(frame: CGRect) {
  52. super.init(frame: frame)
  53. self.prepare()
  54. }
  55. required public init?(coder aDecoder: NSCoder) {
  56. fatalError("init(coder:) has not been implemented")
  57. }
  58. func prepare() {
  59. self.autoresizingMask = .flexibleWidth
  60. self.backgroundColor = UIColor.white
  61. }
  62. override public func layoutSubviews() {
  63. super.layoutSubviews()
  64. let view = self.superview
  65. if (view?.isKind(of: UIScrollView.classForCoder()))! {
  66. // self.width = view!.width
  67. // self.height = view!.height
  68. self.frame = CGRect.init(x: 0, y: 0, width: view!.ly_width, height: view!.ly_height)
  69. }
  70. self.setupSubviews()
  71. }
  72. func setupSubviews() {
  73. }
  74. override public func willMove(toSuperview newSuperview: UIView?) {
  75. super.willMove(toSuperview: newSuperview)
  76. //不是UIScrollView,不做操作
  77. if (newSuperview is UIScrollView ) == false {
  78. return;
  79. }
  80. if newSuperview != nil {
  81. self.ly_width = newSuperview!.ly_width
  82. self.ly_height = newSuperview!.ly_height
  83. }
  84. }
  85. //MARK: ---
  86. // target/action 响应
  87. public class func emptyActionViewWithImageStr(imageStr: NSString, titleStr: NSString, detailStr: NSString, btnTitleStr: NSString, target:AnyObject, action: Selector) -> HDEmptyBaseView {
  88. let emptyView:HDEmptyView = HDEmptyView.init(frame: CGRect.init(x: 0, y: 0, width: 10, height: 10))
  89. emptyView.creatEmptyViewWithImageStr(imageStr: imageStr, titleStr: titleStr, detailStr: detailStr, btnTitleStr: btnTitleStr, target: target, action: action)
  90. return emptyView
  91. }
  92. //Block 回调方法
  93. public class func emptyActionViewWithImageStr(imageStr: NSString, titleStr: NSString, detailStr: NSString, btnTitleStr: NSString, btnClickBlock:@escaping HDTapBlock) -> HDEmptyView {
  94. // let emptyView = HDEmptyView.init(frame: CGRect.zero)
  95. let emptyView:HDEmptyView = HDEmptyView.init(frame: CGRect.init(x: 0, y: 0, width: 10, height: 10))
  96. emptyView.creatEmptyViewWithImageStr(imageStr: imageStr, titleStr: titleStr, detailStr: detailStr, btnTitleStr: btnTitleStr, btnClickBlock: btnClickBlock)
  97. return emptyView
  98. }
  99. //没有刷新操作
  100. // public class func emptyActionViewWithImageStr(imageStr: NSString, titleStr: NSString, detailStr: NSString) -> HDEmptyView {
  101. // let emptyView = self
  102. //
  103. // emptyView.creatEmptyViewWithImageStr(imageStr: imageStr, titleStr: titleStr, detailStr: detailStr)
  104. //
  105. // return emptyView
  106. // }
  107. //自定义显示界面
  108. public class func emptyViewWithCustomView(customView: UIView) -> AnyObject {
  109. let emptyView:HDEmptyView = HDEmptyView.init(frame: CGRect.init(x: 0, y: 0, width: 10, height: 10))
  110. emptyView.creatEmptyViewWithCustomView(customView: customView)
  111. return emptyView
  112. }
  113. func creatEmptyViewWithImageStr(imageStr: NSString, titleStr: NSString, detailStr: NSString, btnTitleStr: NSString, target:AnyObject, action: Selector) {
  114. _imageStr = imageStr
  115. _titleStr = titleStr
  116. _detailStr = detailStr
  117. _btnTitleStr = btnTitleStr
  118. _target = target
  119. _selector = action
  120. if contentView != nil {
  121. contentView = UIView.init(frame: CGRect.zero)
  122. self.addSubview(contentView!)
  123. let tap = UITapGestureRecognizer.init(target: self, action: #selector(tapContentView(_:)))
  124. contentView?.addGestureRecognizer(tap)
  125. }
  126. }
  127. func creatEmptyViewWithImageStr(imageStr: NSString, titleStr: NSString, detailStr: NSString, btnTitleStr: NSString?, btnClickBlock:@escaping HDTapBlock) {
  128. _imageStr = imageStr
  129. _titleStr = titleStr
  130. _detailStr = detailStr
  131. _btnTitleStr = btnTitleStr
  132. _btnClickBlock = btnClickBlock
  133. if contentView != nil {
  134. self.addSubview(contentView!)
  135. let tap = UITapGestureRecognizer.init(target: self, action: #selector(tapContentView(_:)))
  136. contentView?.addGestureRecognizer(tap)
  137. }
  138. }
  139. func creatEmptyViewWithImageStr(imageStr: NSString, titleStr: NSString, detailStr: NSString) {
  140. _imageStr = imageStr
  141. _titleStr = titleStr
  142. _detailStr = detailStr
  143. if contentView != nil {
  144. self.addSubview(contentView!)
  145. let tap = UITapGestureRecognizer.init(target: self, action: #selector(tapContentView(_:)))
  146. contentView?.addGestureRecognizer(tap)
  147. }
  148. }
  149. func creatEmptyViewWithCustomView(customView: UIView) {
  150. if contentView != nil {
  151. self.addSubview(contentView!)
  152. let tap = UITapGestureRecognizer.init(target: self, action: #selector(tapContentView(_:)))
  153. contentView?.addGestureRecognizer(tap)
  154. }
  155. _customView = customView
  156. }
  157. @objc func tapContentView(_ sender:UITapGestureRecognizer) {
  158. if tapContentViewBlock != nil {
  159. tapContentViewBlock!()
  160. }
  161. }
  162. }