MJRefreshBackStateFooter.m 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. //
  2. // MJRefreshBackStateFooter.m
  3. // MJRefresh
  4. //
  5. // Created by MJ Lee on 15/6/13.
  6. // Copyright © 2015年 小码哥. All rights reserved.
  7. //
  8. #import "MJRefreshBackStateFooter.h"
  9. #import "NSBundle+MJRefresh.h"
  10. @interface MJRefreshBackStateFooter()
  11. {
  12. /** 显示刷新状态的label */
  13. __unsafe_unretained UILabel *_stateLabel;
  14. }
  15. /** 所有状态对应的文字 */
  16. @property (strong, nonatomic) NSMutableDictionary *stateTitles;
  17. @end
  18. @implementation MJRefreshBackStateFooter
  19. #pragma mark - 懒加载
  20. - (NSMutableDictionary *)stateTitles
  21. {
  22. if (!_stateTitles) {
  23. self.stateTitles = [NSMutableDictionary dictionary];
  24. }
  25. return _stateTitles;
  26. }
  27. - (UILabel *)stateLabel
  28. {
  29. if (!_stateLabel) {
  30. [self addSubview:_stateLabel = [UILabel mj_label]];
  31. }
  32. return _stateLabel;
  33. }
  34. #pragma mark - 公共方法
  35. - (instancetype)setTitle:(NSString *)title forState:(MJRefreshState)state
  36. {
  37. if (title == nil) return self;
  38. self.stateTitles[@(state)] = title;
  39. self.stateLabel.text = self.stateTitles[@(self.state)];
  40. return self;
  41. }
  42. - (NSString *)titleForState:(MJRefreshState)state {
  43. return self.stateTitles[@(state)];
  44. }
  45. - (void)textConfiguration {
  46. // 初始化文字
  47. [self setTitle:[NSBundle mj_localizedStringForKey:MJRefreshBackFooterIdleText] forState:MJRefreshStateIdle];
  48. [self setTitle:[NSBundle mj_localizedStringForKey:MJRefreshBackFooterPullingText] forState:MJRefreshStatePulling];
  49. [self setTitle:[NSBundle mj_localizedStringForKey:MJRefreshBackFooterRefreshingText] forState:MJRefreshStateRefreshing];
  50. [self setTitle:[NSBundle mj_localizedStringForKey:MJRefreshBackFooterNoMoreDataText] forState:MJRefreshStateNoMoreData];
  51. }
  52. #pragma mark - 重写父类的方法
  53. - (void)prepare
  54. {
  55. [super prepare];
  56. // 初始化间距
  57. self.labelLeftInset = MJRefreshLabelLeftInset;
  58. [self textConfiguration];
  59. }
  60. - (void)i18nDidChange {
  61. [self textConfiguration];
  62. [super i18nDidChange];
  63. }
  64. - (void)placeSubviews
  65. {
  66. [super placeSubviews];
  67. if (self.stateLabel.constraints.count) return;
  68. // 状态标签
  69. self.stateLabel.frame = self.bounds;
  70. }
  71. - (void)setState:(MJRefreshState)state
  72. {
  73. MJRefreshCheckState
  74. // 设置状态文字
  75. self.stateLabel.text = self.stateTitles[@(state)];
  76. }
  77. @end