Files
keyboard/keyBoard/Class/Home/V/KBTopImageButton.m
2025-11-07 14:21:03 +08:00

62 lines
1.7 KiB
Objective-C

//
// KBTopImageButton.m
// keyBoard
//
// 上图下文按钮:图片在上、文字在下,内部简单布局,适合图标型功能入口
//
#import "KBTopImageButton.h"
#import "UIColor+Extension.h"
@interface KBTopImageButton()
@property (nonatomic, strong) UIImageView *iconView;
@property (nonatomic, strong) UILabel *textLabel;
@end
@implementation KBTopImageButton
- (instancetype)initWithFrame:(CGRect)frame {
if (self = [super initWithFrame:frame]) {
_spacing = 6;
_iconSize = CGSizeMake(44, 44);
_iconView = [[UIImageView alloc] init];
_iconView.contentMode = UIViewContentModeScaleAspectFit;
[self addSubview:_iconView];
_textLabel = [[UILabel alloc] init];
_textLabel.font = [UIFont systemFontOfSize:12 weight:UIFontWeightSemibold];
_textLabel.textColor = [UIColor colorWithHex:0x2B2B2B];
_textLabel.textAlignment = NSTextAlignmentCenter;
_textLabel.numberOfLines = 2;
[self addSubview:_textLabel];
}
return self;
}
- (CGSize)intrinsicContentSize {
CGFloat width = MAX(_iconSize.width, 60);
return CGSizeMake(width, _iconSize.height + _spacing + 34);
}
- (void)layoutSubviews {
[super layoutSubviews];
CGFloat W = CGRectGetWidth(self.bounds);
CGFloat H = CGRectGetHeight(self.bounds);
CGSize iconS = self.iconSize;
CGFloat ix = (W - iconS.width) * 0.5;
self.iconView.frame = CGRectMake(ix, 0, iconS.width, iconS.height);
CGFloat labelTop = CGRectGetMaxY(self.iconView.frame) + self.spacing;
CGFloat lh = MAX(0, H - labelTop);
self.textLabel.frame = CGRectMake(0, labelTop, W, lh);
}
- (void)setHighlighted:(BOOL)highlighted {
[super setHighlighted:highlighted];
self.alpha = highlighted ? 0.6 : 1.0;
}
@end