Files
keyboard/CustomKeyboard/View/Buy/KBKeyboardSubscriptionFeatureItemView.m
2025-12-17 19:56:22 +08:00

87 lines
2.9 KiB
Objective-C

//
// KBKeyboardSubscriptionFeatureItemView.m
// CustomKeyboard
//
#import "KBKeyboardSubscriptionFeatureItemView.h"
#import "Masonry.h"
@interface KBKeyboardSubscriptionFeatureItemView ()
@property (nonatomic, strong) UIImageView *iconView;
@property (nonatomic, strong) UILabel *titleLabel;
@end
@implementation KBKeyboardSubscriptionFeatureItemView
static const CGFloat kKBFeatureItemPadding = 5.0;
static const CGFloat kKBFeatureItemIconSize = 35.0;
static const CGFloat kKBFeatureItemGap = 5.0;
- (instancetype)initWithFrame:(CGRect)frame {
if (self = [super initWithFrame:frame]) {
// self.layer.cornerRadius = 24;
// self.layer.masksToBounds = YES;
// self.backgroundColor = [[UIColor whiteColor] colorWithAlphaComponent:0.85];
[self addSubview:self.iconView];
[self addSubview:self.titleLabel];
[self.iconView mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.equalTo(self.mas_left).offset(kKBFeatureItemPadding);
make.centerY.equalTo(self.mas_centerY);
make.width.height.mas_equalTo(kKBFeatureItemIconSize);
}];
[self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.equalTo(self.iconView.mas_right).offset(kKBFeatureItemGap);
make.centerY.equalTo(self.mas_centerY);
make.right.equalTo(self.mas_right).offset(-kKBFeatureItemPadding);
}];
}
return self;
}
- (void)configureWithImage:(UIImage *)image title:(NSString *)title {
self.iconView.image = image;
self.titleLabel.text = title ?: @"";
}
+ (CGFloat)preferredWidthForTitle:(NSString *)title {
UIFont *font = [UIFont systemFontOfSize:13 weight:UIFontWeightSemibold];
NSString *text = title ?: @"";
NSArray<NSString *> *lines = [text componentsSeparatedByCharactersInSet:[NSCharacterSet newlineCharacterSet]];
CGFloat maxLineWidth = 0;
for (NSString *line in lines) {
NSString *trimLine = [line stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
if (trimLine.length == 0) { continue; }
CGSize size = [trimLine sizeWithAttributes:@{NSFontAttributeName: font}];
maxLineWidth = MAX(maxLineWidth, ceil(size.width));
}
if (maxLineWidth <= 0) { maxLineWidth = 80; }
CGFloat width = maxLineWidth + 50.0; // 5 + 35 + 5 + 5
width = MIN(MAX(width, 120.0), 240.0);
return width;
}
- (UIImageView *)iconView {
if (!_iconView) {
_iconView = [[UIImageView alloc] init];
_iconView.contentMode = UIViewContentModeScaleAspectFit;
}
return _iconView;
}
- (UILabel *)titleLabel {
if (!_titleLabel) {
_titleLabel = [[UILabel alloc] init];
_titleLabel.font = [UIFont systemFontOfSize:13 weight:UIFontWeightSemibold];
_titleLabel.textColor = [UIColor colorWithHex:0x4A4A4A];
_titleLabel.numberOfLines = 0;
_titleLabel.lineBreakMode = NSLineBreakByWordWrapping;
}
return _titleLabel;
}
@end