JXCategoryDotCell.m 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. //
  2. // JXCategoryDotCell.m
  3. // JXCategoryView
  4. //
  5. // Created by jiaxin on 2018/8/20.
  6. // Copyright © 2018年 jiaxin. All rights reserved.
  7. //
  8. #import "JXCategoryDotCell.h"
  9. #import "JXCategoryDotCellModel.h"
  10. @interface JXCategoryDotCell ()
  11. @property (nonatomic, strong) CALayer *dotLayer;
  12. @end
  13. @implementation JXCategoryDotCell
  14. - (void)initializeViews {
  15. [super initializeViews];
  16. _dotLayer = [CALayer layer];
  17. [self.contentView.layer addSublayer:self.dotLayer];
  18. }
  19. - (void)layoutSubviews {
  20. [super layoutSubviews];
  21. [CATransaction begin];
  22. [CATransaction setDisableActions:YES];
  23. JXCategoryDotCellModel *myCellModel = (JXCategoryDotCellModel *)self.cellModel;
  24. self.dotLayer.bounds = CGRectMake(0, 0, myCellModel.dotSize.width, myCellModel.dotSize.height);
  25. switch (myCellModel.relativePosition) {
  26. case JXCategoryDotRelativePosition_TopLeft:
  27. {
  28. self.dotLayer.position = CGPointMake(CGRectGetMinX(self.titleLabel.frame) + myCellModel.dotOffset.x, CGRectGetMinY(self.titleLabel.frame) + myCellModel.dotOffset.y);
  29. }
  30. break;
  31. case JXCategoryDotRelativePosition_TopRight:
  32. {
  33. self.dotLayer.position = CGPointMake(CGRectGetMaxX(self.titleLabel.frame) + myCellModel.dotOffset.x, CGRectGetMinY(self.titleLabel.frame) + myCellModel.dotOffset.y);
  34. }
  35. break;
  36. case JXCategoryDotRelativePosition_BottomLeft:
  37. {
  38. self.dotLayer.position = CGPointMake(CGRectGetMinX(self.titleLabel.frame) + myCellModel.dotOffset.x, CGRectGetMaxY(self.titleLabel.frame) + myCellModel.dotOffset.y);
  39. }
  40. break;
  41. case JXCategoryDotRelativePosition_BottomRight:
  42. {
  43. self.dotLayer.position = CGPointMake(CGRectGetMaxX(self.titleLabel.frame) + myCellModel.dotOffset.x, CGRectGetMaxY(self.titleLabel.frame) + myCellModel.dotOffset.y);
  44. }
  45. break;
  46. }
  47. [CATransaction commit];
  48. }
  49. - (void)reloadData:(JXCategoryBaseCellModel *)cellModel {
  50. [super reloadData:cellModel];
  51. JXCategoryDotCellModel *myCellModel = (JXCategoryDotCellModel *)cellModel;
  52. [CATransaction begin];
  53. [CATransaction setDisableActions:YES];
  54. self.dotLayer.hidden = !myCellModel.dotHidden;
  55. self.dotLayer.backgroundColor = myCellModel.dotColor.CGColor;
  56. self.dotLayer.cornerRadius = myCellModel.dotCornerRadius;
  57. [CATransaction commit];
  58. [self setNeedsLayout];
  59. }
  60. @end