1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- //
- // MJRefreshAutoStateFooter.m
- // MJRefreshExample
- //
- // Created by MJ Lee on 15/6/13.
- // Copyright © 2015年 小码哥. All rights reserved.
- //
- #import "MJRefreshAutoStateFooter.h"
- @interface MJRefreshAutoStateFooter()
- {
- /** 显示刷新状态的label */
- __unsafe_unretained UILabel *_stateLabel;
- }
- /** 所有状态对应的文字 */
- @property (strong, nonatomic) NSMutableDictionary *stateTitles;
- @end
- @implementation MJRefreshAutoStateFooter
- #pragma mark - 懒加载
- - (NSMutableDictionary *)stateTitles
- {
- if (!_stateTitles) {
- self.stateTitles = [NSMutableDictionary dictionary];
- }
- return _stateTitles;
- }
- - (UILabel *)stateLabel
- {
- if (!_stateLabel) {
- [self addSubview:_stateLabel = [UILabel mj_label]];
- }
- return _stateLabel;
- }
- #pragma mark - 公共方法
- - (void)setTitle:(NSString *)title forState:(MJRefreshState)state
- {
- if (title == nil) return;
- self.stateTitles[@(state)] = title;
- self.stateLabel.text = self.stateTitles[@(self.state)];
- }
- #pragma mark - 私有方法
- - (void)stateLabelClick
- {
- if (self.state == MJRefreshStateIdle) {
- [self beginRefreshing];
- }
- }
- #pragma mark - 重写父类的方法
- - (void)prepare
- {
- [super prepare];
-
- // 初始化间距
- self.labelLeftInset = MJRefreshLabelLeftInset;
-
- // 初始化文字
- [self setTitle:[NSBundle mj_localizedStringForKey:MJRefreshAutoFooterIdleText] forState:MJRefreshStateIdle];
- [self setTitle:[NSBundle mj_localizedStringForKey:MJRefreshAutoFooterRefreshingText] forState:MJRefreshStateRefreshing];
- [self setTitle:[NSBundle mj_localizedStringForKey:MJRefreshAutoFooterNoMoreDataText] forState:MJRefreshStateNoMoreData];
-
- // 监听label
- self.stateLabel.userInteractionEnabled = YES;
- [self.stateLabel addGestureRecognizer:[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(stateLabelClick)]];
- }
- - (void)placeSubviews
- {
- [super placeSubviews];
-
- if (self.stateLabel.constraints.count) return;
-
- // 状态标签
- self.stateLabel.frame = self.bounds;
- }
- - (void)setState:(MJRefreshState)state
- {
- MJRefreshCheckState
-
- if (self.isRefreshingTitleHidden && state == MJRefreshStateRefreshing) {
- self.stateLabel.text = nil;
- } else {
- self.stateLabel.text = self.stateTitles[@(state)];
- }
- }
- @end
|