UI
This commit is contained in:
@@ -16,7 +16,7 @@ typedef NS_ENUM(NSInteger, KBKeyType) {
|
|||||||
KBKeyTypeSpace, // 空格
|
KBKeyTypeSpace, // 空格
|
||||||
KBKeyTypeReturn, // 回车/发送
|
KBKeyTypeReturn, // 回车/发送
|
||||||
KBKeyTypeGlobe, // 系统地球键
|
KBKeyTypeGlobe, // 系统地球键
|
||||||
KBKeyTypeCustom, // 自定义功能占位
|
KBKeyTypeCustom, // 自定义功能占位 AI
|
||||||
KBKeyTypeSymbolsToggle // 数字面板内的“#+=/123”切换
|
KBKeyTypeSymbolsToggle // 数字面板内的“#+=/123”切换
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -227,6 +227,7 @@
|
|||||||
"backspace" = "key_del";
|
"backspace" = "key_del";
|
||||||
/* Shift(⇧) */
|
/* Shift(⇧) */
|
||||||
"shift" = "key_up";
|
"shift" = "key_up";
|
||||||
|
"shift_upper" = "key_up_upper";
|
||||||
/* 字母面板左下角 "123" */
|
/* 字母面板左下角 "123" */
|
||||||
"mode_123" = "key_123";
|
"mode_123" = "key_123";
|
||||||
/* 数字面板左下角 "abc" */
|
/* 数字面板左下角 "abc" */
|
||||||
|
|||||||
@@ -38,7 +38,7 @@
|
|||||||
if (!self.iconView) {
|
if (!self.iconView) {
|
||||||
UIImageView *iv = [[UIImageView alloc] initWithFrame:CGRectZero];
|
UIImageView *iv = [[UIImageView alloc] initWithFrame:CGRectZero];
|
||||||
// 作为按键的整块皮肤背景,铺满整个按钮区域
|
// 作为按键的整块皮肤背景,铺满整个按钮区域
|
||||||
iv.contentMode = UIViewContentModeScaleAspectFit;
|
iv.contentMode = UIViewContentModeScaleToFill;
|
||||||
iv.clipsToBounds = YES;
|
iv.clipsToBounds = YES;
|
||||||
iv.translatesAutoresizingMaskIntoConstraints = NO;
|
iv.translatesAutoresizingMaskIntoConstraints = NO;
|
||||||
[self addSubview:iv];
|
[self addSubview:iv];
|
||||||
|
|||||||
@@ -371,12 +371,37 @@
|
|||||||
// 避免对基准按钮自身添加 self == self * k 的无效约束
|
// 避免对基准按钮自身添加 self == self * k 的无效约束
|
||||||
if (b == firstChar) continue;
|
if (b == firstChar) continue;
|
||||||
if (b.key.type == KBKeyTypeCharacter) continue;
|
if (b.key.type == KBKeyTypeCharacter) continue;
|
||||||
|
|
||||||
|
// 对 Shift 和 Backspace 强制做 1:1 按钮(宽度 = 高度),
|
||||||
|
// 主要作用于字母布局第三行左右两侧的两个键,避免被挤压导致图标变形。
|
||||||
|
if (b.key.type == KBKeyTypeShift || b.key.type == KBKeyTypeBackspace) {
|
||||||
|
[b mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||||
|
make.width.equalTo(b.mas_height);
|
||||||
|
}];
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
CGFloat multiplier = 1.5;
|
CGFloat multiplier = 1.5;
|
||||||
if (b.key.type == KBKeyTypeSpace) multiplier = 4.0;
|
|
||||||
if (b.key.type == KBKeyTypeReturn) multiplier = 1.8;
|
// Space 保持原来的长条比例
|
||||||
if (b.key.type == KBKeyTypeModeChange || b.key.type == KBKeyTypeGlobe || b.key.type == KBKeyTypeShift || b.key.type == KBKeyTypeBackspace) {
|
if (b.key.type == KBKeyTypeSpace) {
|
||||||
|
multiplier = 4.0;
|
||||||
|
}
|
||||||
|
// Send 按钮:宽度为基准键的 2.6 倍
|
||||||
|
else if (b.key.type == KBKeyTypeReturn) {
|
||||||
|
multiplier = 2.6;
|
||||||
|
}
|
||||||
|
// 删除、123/ABC、#+=、AI:宽度与基准键一致(1 倍,“接近正方形”)
|
||||||
|
else if (b.key.type == KBKeyTypeModeChange ||
|
||||||
|
b.key.type == KBKeyTypeSymbolsToggle ||
|
||||||
|
b.key.type == KBKeyTypeCustom) {
|
||||||
|
multiplier = 1.0;
|
||||||
|
}
|
||||||
|
// 其它特殊键(如 Globe)保持适度放大
|
||||||
|
else if (b.key.type == KBKeyTypeGlobe) {
|
||||||
multiplier = 1.5;
|
multiplier = 1.5;
|
||||||
}
|
}
|
||||||
|
|
||||||
[b mas_makeConstraints:^(MASConstraintMaker *make) {
|
[b mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||||
make.width.equalTo(firstChar).multipliedBy(multiplier);
|
make.width.equalTo(firstChar).multipliedBy(multiplier);
|
||||||
}];
|
}];
|
||||||
|
|||||||
Reference in New Issue
Block a user