JCMineInfoCell.swift 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  1. //
  2. // JCMineInfoCell.swift
  3. // JChat
  4. //
  5. // Created by deng on 2017/3/28.
  6. // Copyright © 2017年 HXHG. All rights reserved.
  7. //
  8. import UIKit
  9. @objc public protocol JCMineInfoCellDelegate: NSObjectProtocol {
  10. @objc optional func mineInfoCell(clickSwitchButton button: UISwitch, indexPath: IndexPath?)
  11. }
  12. class JCMineInfoCell: JCTableViewCell {
  13. open weak var delegate: JCMineInfoCellDelegate?
  14. var indexPate: IndexPath?
  15. var title: String {
  16. get {
  17. return titleLabel.text ?? ""
  18. }
  19. set {
  20. return titleLabel.text = newValue
  21. }
  22. }
  23. var detail: String? {
  24. get {
  25. return detailLabel.text
  26. }
  27. set {
  28. detailLabel.isHidden = false
  29. detailLabel.text = newValue
  30. }
  31. }
  32. var isShowSwitch: Bool {
  33. get {
  34. return !switchButton.isHidden
  35. }
  36. set {
  37. switchButton.isHidden = !newValue
  38. }
  39. }
  40. var isSwitchOn: Bool {
  41. get {
  42. return switchButton.isOn
  43. }
  44. set {
  45. switchButton.isOn = newValue
  46. }
  47. }
  48. override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
  49. super.init(style: style, reuseIdentifier: reuseIdentifier)
  50. _init()
  51. }
  52. required init?(coder aDecoder: NSCoder) {
  53. super.init(coder: aDecoder)
  54. _init()
  55. }
  56. override func awakeFromNib() {
  57. super.awakeFromNib()
  58. _init()
  59. }
  60. private lazy var titleLabel: UILabel = {
  61. let titleLabel = UILabel()
  62. titleLabel.textAlignment = .left
  63. titleLabel.font = UIFont.systemFont(ofSize: 16)
  64. titleLabel.backgroundColor = .white
  65. titleLabel.layer.masksToBounds = true
  66. return titleLabel
  67. }()
  68. private lazy var switchButton: UISwitch = {
  69. let switchButton = UISwitch()
  70. switchButton.isHidden = true
  71. switchButton.addTarget(self, action: #selector(clickSwitch(_:)), for: .valueChanged)
  72. return switchButton
  73. }()
  74. private lazy var detailLabel: UILabel = {
  75. let detailLabel = UILabel()
  76. detailLabel.textAlignment = .right
  77. detailLabel.font = UIFont.systemFont(ofSize: 14)
  78. detailLabel.isHidden = true
  79. detailLabel.textColor = UIColor(netHex: 0x999999)
  80. detailLabel.backgroundColor = .white
  81. detailLabel.layer.masksToBounds = true
  82. return detailLabel
  83. }()
  84. //MARK: - private func
  85. private func _init() {
  86. contentView.addSubview(switchButton)
  87. contentView.addSubview(titleLabel)
  88. contentView.addSubview(detailLabel)
  89. addConstraint(_JCLayoutConstraintMake(titleLabel, .left, .equal, contentView, .left, 15))
  90. addConstraint(_JCLayoutConstraintMake(titleLabel, .right, .equal, contentView, .centerX))
  91. addConstraint(_JCLayoutConstraintMake(titleLabel, .centerY, .equal, contentView, .centerY))
  92. addConstraint(_JCLayoutConstraintMake(titleLabel, .height, .equal, nil, .notAnAttribute, 22.5))
  93. addConstraint(_JCLayoutConstraintMake(detailLabel, .centerY, .equal, contentView, .centerY))
  94. addConstraint(_JCLayoutConstraintMake(detailLabel, .left, .equal, titleLabel, .right))
  95. addConstraint(_JCLayoutConstraintMake(detailLabel, .right, .equal, contentView, .right))
  96. addConstraint(_JCLayoutConstraintMake(detailLabel, .height, .equal, contentView, .height))
  97. addConstraint(_JCLayoutConstraintMake(switchButton, .right, .equal, contentView, .right, -15))
  98. addConstraint(_JCLayoutConstraintMake(switchButton, .centerY, .equal, contentView, .centerY))
  99. }
  100. func clickSwitch(_ sender: UISwitch) {
  101. delegate?.mineInfoCell?(clickSwitchButton: sender, indexPath: indexPate)
  102. }
  103. }