IHDashBoardHeaderView.swift 9.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291
  1. //
  2. // IHDashBoardHeaderView.swift
  3. // Inhealth
  4. //
  5. // Created by weclouds on 2019/12/10.
  6. // Copyright © 2019 weclouds. All rights reserved.
  7. //
  8. import UIKit
  9. import Kingfisher
  10. class IHDashBoardHeaderView: UIView {
  11. var cond_code:String?{
  12. didSet{
  13. if let cond_code = cond_code {
  14. weatherIcon.image = UIImage(named: "\(cond_code).png")
  15. }
  16. }
  17. }
  18. var cond_txt :String?{
  19. didSet{
  20. if let cond_txt = self.cond_txt {
  21. self.weatherLabel.text = cond_txt.isBlanck == true ? "没数据" : cond_txt
  22. self.weatherLabel.textAlignment = .center
  23. }
  24. }
  25. }
  26. var level:String?{
  27. didSet{
  28. if let level = self.level {
  29. self.levelLabel.text = level
  30. let str_width = level.ga_widthForComment(font:UIFont(name: Alibaba_PuHuiTi_Heavy, size: 14)! , height: 24)
  31. self.levelLabel.snp.remakeConstraints { (make) in
  32. make.centerY.equalToSuperview()
  33. if KSCREENWIDTH == 375 {
  34. make.right.equalTo(-30)
  35. }else{
  36. make.right.equalTo(-50)
  37. }
  38. make.width.equalTo(str_width + 20)
  39. make.height.equalTo(24)
  40. }
  41. // self.layoutIfNeeded()
  42. // self.setConer()
  43. DispatchQueue.main.asyncAfter(deadline: .now() + 0) {
  44. self.setConer()
  45. }
  46. }
  47. }
  48. }
  49. var averageAir:String?{
  50. didSet{
  51. self.airQualityValueLabel.text = self.averageAir
  52. }
  53. }
  54. var callback:(()->Void)?
  55. lazy var bigLabel: UILabel = {
  56. let label = UILabel()
  57. label.textColor = UIColor(hexString: "#333333")
  58. label.font = UIFont(name: Alibaba_PuHuiTi_Heavy, size: 28)
  59. let period = IHUtil.share.currentPeriod()
  60. switch period {
  61. case .normal:
  62. label.text = "您好,"
  63. case .morning:
  64. label.text = "早上好,"
  65. case .afternoon:
  66. label.text = "下午好,"
  67. case .evening:
  68. label.text = "晚上好,"
  69. }
  70. return label
  71. }()
  72. lazy var guestNameLabel: UILabel = {
  73. let label = UILabel()
  74. label.textColor = UIColor(hexString: "#657085")
  75. label.font = UIFont(name: PingFangSC_Semibold, size: 19)
  76. label.text = AppShare.username
  77. return label
  78. }()
  79. lazy var guestIcon: UIImageView = {
  80. let imageView = UIImageView()
  81. // imageView.backgroundColor = .green
  82. let avatar = AppShare.mLoginData?.avatar ?? ""
  83. imageView.netImage(url: avatar, placeholder: "酒店头像")
  84. imageView.isUserInteractionEnabled = true
  85. let tap = UITapGestureRecognizer(target: self, action: #selector(iconTap))
  86. imageView.addGestureRecognizer(tap)
  87. return imageView
  88. }()
  89. lazy var toolbar: UIView = {
  90. let toolbar = UIView()
  91. // toolbar.backgroundColor = UIColor(patternImage: UIImage(named: "首页底色")!)
  92. return toolbar
  93. }()
  94. lazy var airQualityValueLabel: UILabel = {
  95. let airQualityValueLabel = UILabel()
  96. airQualityValueLabel.text = "83"
  97. airQualityValueLabel.textColor = UIColor(hexString: "#FFFFFF")
  98. if KSCREENWIDTH <= 375 {
  99. airQualityValueLabel.font = UIFont(name: Alibaba_PuHuiTi_Medium, size: 35)
  100. }else{
  101. airQualityValueLabel.font = UIFont(name: Alibaba_PuHuiTi_Medium, size: 40)
  102. }
  103. return airQualityValueLabel
  104. }()
  105. lazy var airQualityLabel: UILabel = {
  106. let airQualityValueLabel = UILabel()
  107. airQualityValueLabel.text = "地市环境指数"
  108. airQualityValueLabel.numberOfLines = 2
  109. airQualityValueLabel.textColor = UIColor(hexString: "#FFFFFF")
  110. airQualityValueLabel.font = UIFont(name: PingFangSC_Medium, size: 12)
  111. return airQualityValueLabel
  112. }()
  113. lazy var levelLabel: UILabel = {
  114. let levelLabel = UILabel()
  115. levelLabel.text = "好"
  116. levelLabel.textAlignment = .center
  117. // levelLabel.backgroundColor = UIColor(hexString: "#FFFFFF")
  118. levelLabel.backgroundColor = .white
  119. //#573F95 #05CFAB
  120. levelLabel.textColor = UIColor(hexString: "#573F95")
  121. levelLabel.font = UIFont(name: Alibaba_PuHuiTi_Heavy, size: 14)
  122. return levelLabel
  123. }()
  124. lazy var weatherIcon :UIImageView = {
  125. let icon = UIImageView()
  126. return icon
  127. }()
  128. lazy var weatherLabel: UILabel = {
  129. let weatherLabel = UILabel()
  130. weatherLabel.textColor = UIColor(hexString: "#FFFFFF")
  131. weatherLabel.font = UIFont(name: PingFangSC_Heavy, size: 14)
  132. //weatherLabel.backgroundColor = .black
  133. weatherLabel.adjustsFontSizeToFitWidth = true // 设置允许总体自适应字体大小
  134. weatherLabel.minimumScaleFactor = 0.1// 设置允许文本显示的最小字体
  135. weatherLabel.numberOfLines = 2
  136. weatherLabel.textAlignment = .center
  137. return weatherLabel
  138. }()
  139. override init(frame: CGRect) {
  140. super.init(frame: frame)
  141. createUI()
  142. log.debug("头视图")
  143. // guestIcon.netImage(url: AppShare.mLoginData!.avatar!, placeholder: nil)
  144. }
  145. required init?(coder: NSCoder) {
  146. fatalError("init(coder:) has not been implemented")
  147. }
  148. func createUI() {
  149. addSubview(bigLabel)
  150. addSubview(guestNameLabel)
  151. addSubview(guestIcon)
  152. addSubview(toolbar)
  153. toolbar.addSubview(airQualityValueLabel)
  154. toolbar.addSubview(airQualityLabel)
  155. toolbar.addSubview(levelLabel)
  156. bigLabel.snp.makeConstraints { (make) in
  157. make.left.equalToSuperview().offset(20)
  158. make.top.equalToSuperview().offset(10)
  159. make.height.equalTo(39)
  160. }
  161. guestNameLabel.snp.makeConstraints { (make) in
  162. make.left.equalToSuperview().offset(26)
  163. make.top.equalTo(bigLabel.snp.bottom).offset(2)
  164. }
  165. guestIcon.snp.makeConstraints { (make) in
  166. make.right.equalToSuperview().offset(-20)
  167. make.top.equalToSuperview().offset(10)
  168. make.height.width.equalTo(60)
  169. }
  170. guestIcon.layer.masksToBounds = true
  171. guestIcon.layer.cornerRadius = 30
  172. toolbar.snp.makeConstraints { (make) in
  173. make.top.equalTo(guestNameLabel.snp.bottom).offset(24)
  174. make.left.equalToSuperview().offset(7)
  175. make.right.equalToSuperview().offset(-7)
  176. make.height.equalTo(105)
  177. }
  178. let bgImageView = UIImageView(image: UIImage(named: "首页底色"))
  179. toolbar.insertSubview(bgImageView, at: 0)
  180. // bgImageView.contentMode = .scaleToFill
  181. bgImageView.snp.makeConstraints { (make) in
  182. make.top.bottom.left.right.equalToSuperview()
  183. }
  184. airQualityValueLabel.snp.makeConstraints { (make) in
  185. make.left.equalToSuperview().offset(26 + 85)
  186. make.top.equalToSuperview().offset(32 + 10)
  187. make.height.equalTo(50)
  188. }
  189. airQualityLabel.snp.makeConstraints { (make) in
  190. make.top.equalToSuperview().offset(15)
  191. make.left.equalToSuperview().offset(26 + 85)
  192. make.width.equalTo(196)
  193. // make.height.equalTo(25)
  194. }
  195. levelLabel.snp.makeConstraints { (make) in
  196. make.centerY.equalToSuperview()
  197. make.right.equalTo(-50)
  198. make.width.equalTo(60)
  199. make.height.equalTo(24)
  200. }
  201. // self.layoutIfNeeded()
  202. // self.setConer()
  203. DispatchQueue.main.asyncAfter(deadline: .now() + 0) {
  204. self.setConer()
  205. }
  206. let dashView = IHVerticalDashLine(frame: CGRect(x: 85, y: 20, width: 0.5, height: 100 - 45), lineLength: 5, lineSpacing: 3, lineColor: .white)
  207. toolbar.addSubview(dashView)
  208. toolbar.addSubview(weatherIcon)
  209. toolbar.addSubview(weatherLabel)
  210. weatherIcon.snp.makeConstraints { (make) in
  211. make.top.equalToSuperview().offset(18)
  212. make.right.equalTo(dashView.snp.left).offset(-20)
  213. make.height.width.equalTo(30)
  214. }
  215. weatherLabel.snp.makeConstraints { (make) in
  216. make.top.equalTo(weatherIcon.snp.bottom).offset(2)
  217. make.right.equalTo(dashView.snp.right).offset(-5)
  218. make.width.equalTo(85 - 10 - 10)
  219. make.bottom.equalToSuperview().offset(-14)
  220. }
  221. self.layoutIfNeeded()
  222. }
  223. func configRectCorner(view: UIView, corner: UIRectCorner, radii: CGSize) -> CALayer {
  224. let maskPath = UIBezierPath.init(roundedRect: view.bounds, byRoundingCorners: corner, cornerRadii: radii)
  225. let maskLayer = CAShapeLayer.init()
  226. maskLayer.frame = view.bounds
  227. maskLayer.path = maskPath.cgPath
  228. return maskLayer
  229. }
  230. @objc func iconTap() {
  231. // log.debug("iconTap")
  232. if let callback = callback {
  233. callback()
  234. }
  235. }
  236. //设置三个角
  237. func setConer() {
  238. let corners: UIRectCorner = [.bottomLeft,.topLeft,.topRight]
  239. let maskPath = UIBezierPath(roundedRect: self.levelLabel.bounds, byRoundingCorners: corners, cornerRadii: CGSize(width: 12, height: 12))
  240. let maskLayer = CAShapeLayer()
  241. maskLayer.frame = self.levelLabel.bounds
  242. maskLayer.path = maskPath.cgPath
  243. self.levelLabel.layer.mask = maskLayer
  244. }
  245. }