Подтвердить что ты не робот

Цвет клавиатуры IOS7 Return/Done/Search

С новым цветом оттенков UIView iOS7 становится довольно легко быстро разгласить все приложение. Он даже изменяет цвет текста в процессе редактирования UITextFields.

Тем не менее, кнопка внизу справа от кнопки "отменить" (может быть выполнена "Готово", "Поиск" и т.д.) всегда синяя. Есть ли способ изменить это? Это выглядело бы очень хорошо, если бы он соответствовал цвету оттенка остальной части приложения.

iOS7 UISearchBar keyboard

4b9b3361

Ответ 1

С небольшим взломом, возможно, вы сможете добиться эффекта, который вы ищете. Но он не сможет передать обзор приложения.

-(NSArray*)subviewsOfView:(UIView*)view withType:(NSString*)type{
    NSString *prefix = [NSString stringWithFormat:@"<%@",type];
    NSMutableArray *subviewArray = [NSMutableArray array];
    for (UIView *subview in view.subviews) {
        NSArray *tempArray = [self subviewsOfView:subview withType:type];
        for (UIView *view in tempArray) {
            [subviewArray addObject:view];
        }
    }
    if ([[view description]hasPrefix:prefix]) {
        [subviewArray addObject:view];
    }
    return [NSArray arrayWithArray:subviewArray];
}

-(void)addColorToUIKeyboardButton{
    for (UIWindow *keyboardWindow in [[UIApplication sharedApplication] windows]) {
        for (UIView *keyboard in [keyboardWindow subviews]) {
            for (UIView *view in [self subviewsOfView:keyboard withType:@"UIKBKeyplaneView"]) {
                UIView *newView = [[UIView alloc] initWithFrame:[(UIView *)[[self subviewsOfView:keyboard withType:@"UIKBKeyView"] lastObject] frame]];
                newView.frame = CGRectMake(newView.frame.origin.x + 2, newView.frame.origin.y + 1, newView.frame.size.width - 4, newView.frame.size.height -3);
                [newView setBackgroundColor:[UIColor greenColor]];
                newView.layer.cornerRadius = 4;
                [view insertSubview:newView belowSubview:((UIView *)[[self subviewsOfView:keyboard withType:@"UIKBKeyView"] lastObject])];

            }
        }
    }
}

Приложение, которое я использовал для декодирования иерархии представлений, было: http://revealapp.com/

Конечный результат выглядит следующим образом: Green Key

Ответ 2

Вы не можете изменить цвет оттенка кнопки, но вы можете установить цвет keyboard Tint с помощью UIKeyboardAppearance

image

Пример: yourTextField.keyboardAppearance = UIKeyboardAppearanceDark;

Вот хороший документ, предоставленный Apple, посмотрите здесь:

Управление клавиатурой

Ответ 3

let colors: [UIColor] = [.red, .blue, .green, .purple, .yellow, .orange, .brown]

if let window = UIApplication.shared.windows.first(where: { 
    $0.isType(string: "UIRemoteKeyboardWindow") 
}) {
    if let keyplaneView = window.subview(ofType: "UIKBKeyplaneView") {
        for (i, keyView) in keyplaneView.subviews.filter({
            $0.isType(string: "UIKBKeyView") 
        }).enumerated() {
            let view = UIView(frame: keyView.bounds)
            view.backgroundColor = colors[i].withAlphaComponent(0.5)
            keyView.addSubview(view)
        }
    }
}

Вот цветовая карта ключей в UIKBKeyplaneView:

kOW0O.png