JXSegmentedNumberCell.swift 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. //
  2. // JXSegmentedNumberCell.swift
  3. // JXSegmentedView
  4. //
  5. // Created by jiaxin on 2018/12/28.
  6. // Copyright © 2018 jiaxin. All rights reserved.
  7. //
  8. import UIKit
  9. open class JXSegmentedNumberCell: JXSegmentedTitleCell {
  10. public let numberLabel = UILabel()
  11. open override func commonInit() {
  12. super.commonInit()
  13. numberLabel.isHidden = true
  14. numberLabel.textAlignment = .center
  15. numberLabel.layer.masksToBounds = true
  16. contentView.addSubview(numberLabel)
  17. }
  18. open override func layoutSubviews() {
  19. super.layoutSubviews()
  20. guard let myItemModel = itemModel as? JXSegmentedNumberItemModel else {
  21. return
  22. }
  23. numberLabel.sizeToFit()
  24. let height = myItemModel.numberHeight
  25. numberLabel.layer.cornerRadius = height/2
  26. numberLabel.bounds.size = CGSize(width: numberLabel.bounds.size.width + myItemModel.numberWidthIncrement, height: height)
  27. numberLabel.center = CGPoint(x: titleLabel.frame.maxX + myItemModel.numberOffset.x, y: titleLabel.frame.minY + myItemModel.numberOffset.y)
  28. }
  29. open override func reloadData(itemModel: JXSegmentedBaseItemModel, selectedType: JXSegmentedViewItemSelectedType) {
  30. super.reloadData(itemModel: itemModel, selectedType: selectedType )
  31. guard let myItemModel = itemModel as? JXSegmentedNumberItemModel else {
  32. return
  33. }
  34. numberLabel.backgroundColor = myItemModel.numberBackgroundColor
  35. numberLabel.textColor = myItemModel.numberTextColor
  36. numberLabel.text = myItemModel.numberString
  37. numberLabel.font = myItemModel.numberFont
  38. numberLabel.isHidden = myItemModel.number == 0
  39. setNeedsLayout()
  40. }
  41. }