108 lines
3.6 KiB
Objective-C
108 lines
3.6 KiB
Objective-C
//
|
|
// KBFunctionTagCell.m
|
|
// CustomKeyboard
|
|
//
|
|
// Created by Codex on 2025/10/28.
|
|
//
|
|
|
|
#import "KBFunctionTagCell.h"
|
|
#import "Masonry.h"
|
|
|
|
@interface KBFunctionTagCell ()
|
|
@property (nonatomic, strong) UILabel *titleLabelInternal;
|
|
@property (nonatomic, strong) UIImageView *iconViewInternal;
|
|
@property (nonatomic, strong) UIActivityIndicatorView *loadingView;
|
|
@end
|
|
|
|
@implementation KBFunctionTagCell
|
|
|
|
- (instancetype)initWithFrame:(CGRect)frame {
|
|
if (self = [super initWithFrame:frame]) {
|
|
self.contentView.backgroundColor = [UIColor colorWithWhite:1 alpha:0.9];
|
|
self.contentView.layer.cornerRadius = 12;
|
|
self.contentView.layer.masksToBounds = YES;
|
|
|
|
[self.contentView addSubview:self.iconViewInternal];
|
|
[self.contentView addSubview:self.titleLabelInternal];
|
|
|
|
[self.iconViewInternal mas_makeConstraints:^(MASConstraintMaker *make) {
|
|
make.left.equalTo(self.contentView.mas_left).offset(10);
|
|
make.centerY.equalTo(self.contentView.mas_centerY);
|
|
make.width.height.mas_equalTo(24);
|
|
}];
|
|
[self.titleLabelInternal mas_makeConstraints:^(MASConstraintMaker *make) {
|
|
make.left.equalTo(self.iconViewInternal.mas_right).offset(6);
|
|
make.right.equalTo(self.contentView.mas_right).offset(-10);
|
|
make.centerY.equalTo(self.contentView.mas_centerY);
|
|
}];
|
|
|
|
// 小菊花:默认隐藏,放在标题右侧
|
|
[self.contentView addSubview:self.loadingView];
|
|
[self.loadingView mas_makeConstraints:^(MASConstraintMaker *make) {
|
|
make.centerY.equalTo(self.contentView);
|
|
make.right.equalTo(self.contentView.mas_right).offset(-10);
|
|
make.width.height.mas_equalTo(16);
|
|
}];
|
|
}
|
|
return self;
|
|
}
|
|
|
|
#pragma mark - Lazy
|
|
|
|
- (UIImageView *)iconViewInternal {
|
|
if (!_iconViewInternal) {
|
|
_iconViewInternal = [[UIImageView alloc] init];
|
|
UILabel *emoji = [[UILabel alloc] init];
|
|
emoji.text = @"🙂"; // 占位图标
|
|
emoji.textAlignment = NSTextAlignmentCenter;
|
|
emoji.font = [UIFont systemFontOfSize:20];
|
|
[_iconViewInternal addSubview:emoji];
|
|
[emoji mas_makeConstraints:^(MASConstraintMaker *make) {
|
|
make.edges.equalTo(_iconViewInternal);
|
|
}];
|
|
}
|
|
return _iconViewInternal;
|
|
}
|
|
|
|
- (UILabel *)titleLabelInternal {
|
|
if (!_titleLabelInternal) {
|
|
_titleLabelInternal = [[UILabel alloc] init];
|
|
_titleLabelInternal.font = [UIFont systemFontOfSize:15 weight:UIFontWeightSemibold];
|
|
_titleLabelInternal.textColor = [UIColor blackColor];
|
|
}
|
|
return _titleLabelInternal;
|
|
}
|
|
|
|
#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 130000
|
|
static UIActivityIndicatorViewStyle KBSpinnerStyle(void) { return UIActivityIndicatorViewStyleMedium; }
|
|
#else
|
|
static UIActivityIndicatorViewStyle KBSpinnerStyle(void) { return UIActivityIndicatorViewStyleGray; }
|
|
#endif
|
|
|
|
- (UIActivityIndicatorView *)loadingView {
|
|
if (!_loadingView) {
|
|
_loadingView = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:KBSpinnerStyle()];
|
|
_loadingView.hidesWhenStopped = YES;
|
|
_loadingView.color = [UIColor grayColor];
|
|
_loadingView.hidden = YES;
|
|
}
|
|
return _loadingView;
|
|
}
|
|
|
|
#pragma mark - Expose
|
|
|
|
- (UILabel *)titleLabel { return self.titleLabelInternal; }
|
|
- (UIImageView *)iconView { return self.iconViewInternal; }
|
|
|
|
- (void)setLoading:(BOOL)loading {
|
|
if (loading) {
|
|
self.loadingView.hidden = NO;
|
|
[self.loadingView startAnimating];
|
|
} else {
|
|
[self.loadingView stopAnimating];
|
|
self.loadingView.hidden = YES;
|
|
}
|
|
}
|
|
|
|
@end
|