ExpressAddressListTableViewCell.swift 7.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214
  1. //
  2. // ExpressAddressListTableViewCell.swift
  3. // RainbowPlanet
  4. //
  5. // Created by 南鑫林 on 2019/4/26.
  6. // Copyright © 2019 南鑫林. All rights reserved.
  7. //
  8. import UIKit
  9. import RxSwift
  10. import RxCocoa
  11. class ExpressAddressListTableViewCell: UITableViewCell {
  12. class func cellWith(tableView:UITableView,indexPath:IndexPath) -> ExpressAddressListTableViewCell {
  13. let ID = "ExpressAddressListTableViewCell"
  14. tableView.register(ExpressAddressListTableViewCell.self, forCellReuseIdentifier: ID)
  15. let cell : ExpressAddressListTableViewCell = tableView.dequeueReusableCell(withIdentifier: ID, for: indexPath) as! ExpressAddressListTableViewCell
  16. cell.indexPath = indexPath
  17. return cell
  18. }
  19. override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
  20. super.init(style: style, reuseIdentifier: reuseIdentifier)
  21. setupViews()
  22. setupLayouts()
  23. }
  24. required init?(coder aDecoder: NSCoder) {
  25. fatalError("init(coder:) has not been implemented")
  26. }
  27. var indexPath: IndexPath? {
  28. didSet {
  29. }
  30. }
  31. let disposeBag = DisposeBag()
  32. typealias EditClosure = (_ indexPath: IndexPath) -> Void
  33. var editClosure: EditClosure?
  34. //MRAK: - 设置View
  35. private func setupViews() {
  36. self.selectionStyle = .none
  37. addSubview(nameLabel)
  38. addSubview(moblieLabel)
  39. addSubview(defalutLabel)
  40. addSubview(addressLabel)
  41. addSubview(lineLabel)
  42. addSubview(v_lineLabel)
  43. addSubview(editButton)
  44. addSubview(selectedButton)
  45. }
  46. private func setupLayouts() {
  47. nameLabel.snp.makeConstraints { (make) in
  48. make.top.equalTo(15)
  49. make.left.equalTo(52)
  50. make.height.equalTo(23)
  51. }
  52. moblieLabel.snp.makeConstraints { (make) in
  53. make.left.equalTo(nameLabel.snp.right).offset(10)
  54. make.centerY.equalTo(nameLabel)
  55. make.height.equalTo(20)
  56. }
  57. addressLabel.snp.remakeConstraints { (make) in
  58. make.top.equalTo(nameLabel.snp.bottom).offset(5)
  59. make.left.equalTo(92)
  60. make.right.equalTo(-60)
  61. make.bottom.equalTo(-15)
  62. }
  63. defalutLabel.snp.remakeConstraints { (make) in
  64. make.left.equalTo(nameLabel)
  65. make.top.equalTo(addressLabel)
  66. make.width.equalTo(36)
  67. make.height.equalTo(17)
  68. }
  69. lineLabel.snp.makeConstraints { (make) in
  70. make.top.right.equalToSuperview()
  71. make.left.equalTo(14)
  72. make.height.equalTo(0.5)
  73. }
  74. editButton.snp.makeConstraints { (make) in
  75. make.centerY.equalToSuperview()
  76. make.size.equalTo(50)
  77. make.right.equalToSuperview()
  78. }
  79. selectedButton.snp.makeConstraints { (make) in
  80. make.left.equalTo(14)
  81. make.top.equalTo(addressLabel.snp.top)
  82. make.size.equalTo(16)
  83. }
  84. v_lineLabel.snp.makeConstraints { (make) in
  85. make.right.equalTo(editButton.snp.left)
  86. make.height.centerY.equalTo(editButton)
  87. make.width.equalTo(0.5)
  88. }
  89. }
  90. private lazy var nameLabel: UILabel = {
  91. let nameLabel = UILabel()
  92. nameLabel.text = "姓名"
  93. nameLabel.textColor = k333333Color
  94. nameLabel.font = kMediumFont16
  95. return nameLabel
  96. }()
  97. private lazy var moblieLabel: UILabel = {
  98. let moblieLabel = UILabel()
  99. moblieLabel.text = "18392056542"
  100. moblieLabel.textColor = k999999Color
  101. moblieLabel.font = kRegularFont14
  102. return moblieLabel
  103. }()
  104. private lazy var defalutLabel: UILabel = {
  105. let defalutLabel = UILabel()
  106. defalutLabel.backgroundColor = kFFF1EBColor
  107. defalutLabel.text = "默认"
  108. defalutLabel.textColor = kFE5706Color
  109. defalutLabel.font = kRegularFont13
  110. defalutLabel.cornerRadius = 17/2
  111. defalutLabel.masksToBounds = true
  112. defalutLabel.textAlignment = .center
  113. return defalutLabel
  114. }()
  115. private lazy var addressLabel: UILabel = {
  116. let addressLabel = UILabel()
  117. addressLabel.text = "陕西省 西安市 雁塔区 曲江街道 翠华南路创意盒子"
  118. addressLabel.textColor = k333333Color
  119. addressLabel.font = kRegularFont14
  120. addressLabel.numberOfLines = 0
  121. return addressLabel
  122. }()
  123. private lazy var lineLabel: UILabel = {
  124. let lineLabel = UILabel()
  125. lineLabel.backgroundColor = kf5f5f5Color
  126. return lineLabel
  127. }()
  128. private lazy var v_lineLabel: UILabel = {
  129. let v_lineLabel = UILabel()
  130. v_lineLabel.backgroundColor = ke6e6e6Color
  131. return v_lineLabel
  132. }()
  133. private lazy var editButton : UIButton = {
  134. let editButton = UIButton(type: UIButton.ButtonType.custom)
  135. editButton.setTitle("编辑", for: UIControl.State.normal)
  136. editButton.setTitleColor(k999999Color, for: UIControl.State.normal)
  137. editButton.titleLabel?.font = kRegularFont14
  138. editButton.rx.tap.subscribe(onNext: {
  139. [weak self] in
  140. if let editClosure = self?.editClosure {
  141. editClosure((self?.indexPath!)!)
  142. }
  143. }).disposed(by: disposeBag)
  144. return editButton
  145. }()
  146. private lazy var selectedButton: UIButton = {
  147. let selectedButton = UIButton(type: UIButton.ButtonType.custom)
  148. selectedButton.setImage(kImage(name: "common_uncheck_icon"), for: UIControl.State.normal)
  149. selectedButton.setImage(kImage(name: "common_check_icon"), for: UIControl.State.selected)
  150. return selectedButton
  151. }()
  152. var expressAddresModel: ExpressAddresModel? {
  153. didSet {
  154. nameLabel.text = expressAddresModel?.contactName
  155. moblieLabel.text = expressAddresModel?.contactMobile
  156. let provinceName = expressAddresModel!.provinceName
  157. let cityName = expressAddresModel!.cityName
  158. let areaName = expressAddresModel!.areaName
  159. let address = expressAddresModel!.address
  160. addressLabel.text = "\(String(describing: provinceName ?? "")) \(String(describing: cityName ?? "")) \(String(describing: areaName ?? "")) \(String(describing: address ?? ""))"
  161. if expressAddresModel!.isDefault == 1 {
  162. selectedButton.isSelected = true
  163. defalutLabel.isHidden = false
  164. addressLabel.snp.remakeConstraints { (make) in
  165. make.top.equalTo(nameLabel.snp.bottom).offset(5)
  166. make.left.equalTo(92)
  167. make.right.equalTo(-60)
  168. make.bottom.equalTo(-15)
  169. }
  170. }else {
  171. selectedButton.isSelected = false
  172. defalutLabel.isHidden = true
  173. addressLabel.snp.remakeConstraints { (make) in
  174. make.top.equalTo(nameLabel.snp.bottom).offset(5)
  175. make.left.equalTo(52)
  176. make.right.equalTo(-60)
  177. make.bottom.equalTo(-15)
  178. }
  179. }
  180. }
  181. }
  182. }