57 lines
1.6 KiB
Objective-C
57 lines
1.6 KiB
Objective-C
//
|
|
// KBKeyButton.m
|
|
// CustomKeyboard
|
|
//
|
|
|
|
#import "KBKeyButton.h"
|
|
#import "KBKey.h"
|
|
|
|
@implementation KBKeyButton
|
|
|
|
- (instancetype)initWithFrame:(CGRect)frame {
|
|
if (self = [super initWithFrame:frame]) {
|
|
[self applyDefaultStyle];
|
|
}
|
|
return self;
|
|
}
|
|
|
|
- (void)applyDefaultStyle {
|
|
self.titleLabel.font = [UIFont systemFontOfSize:18 weight:UIFontWeightSemibold]; // 字体样式
|
|
[self setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
|
|
[self setTitleColor:[UIColor blackColor] forState:UIControlStateHighlighted];
|
|
self.backgroundColor = [UIColor whiteColor];
|
|
self.layer.cornerRadius = 6.0; // 圆角
|
|
self.layer.masksToBounds = NO;
|
|
self.layer.shadowColor = [UIColor colorWithWhite:0 alpha:0.1].CGColor; // 阴影效果
|
|
self.layer.shadowOpacity = 1.0;
|
|
self.layer.shadowOffset = CGSizeMake(0, 1);
|
|
self.layer.shadowRadius = 1.5;
|
|
[self refreshStateAppearance];
|
|
}
|
|
|
|
- (void)setHighlighted:(BOOL)highlighted {
|
|
[super setHighlighted:highlighted];
|
|
// 简单按压反馈:选中态不改变透明度,避免和高亮态冲突
|
|
if (self.isSelected) {
|
|
self.alpha = 1.0;
|
|
} else {
|
|
self.alpha = highlighted ? 0.2 : 1.0;
|
|
}
|
|
}
|
|
|
|
- (void)setSelected:(BOOL)selected {
|
|
[super setSelected:selected];
|
|
[self refreshStateAppearance];
|
|
}
|
|
|
|
- (void)refreshStateAppearance {
|
|
// 选中态用于 Shift/CapsLock 等特殊按键的高亮显示
|
|
if (self.isSelected) {
|
|
self.backgroundColor = [UIColor colorWithWhite:0.85 alpha:1.0];
|
|
} else {
|
|
self.backgroundColor = [UIColor whiteColor];
|
|
}
|
|
}
|
|
|
|
@end
|