web-dev-qa-db-fra.com

couleur de teinte Retour/Fini/Recherche du clavier iOS7

Avec la nouvelle couleur de teinte iOS7 UIView, il devient assez facile de cibler rapidement une application entière. Il change même la couleur du curseur de texte lors de l'édition de UITextFields.

Cependant, le bouton '' ignorer '' en bas à droite du clavier (peut être Terminé, Rechercher, etc.) est toujours bleu. Est-ce qu'il y a une façon de changer ceci-ci? Cela aurait l'air vraiment bien si cela correspond à la couleur de la teinte du reste de l'application.

iOS7 UISearchBar keyboard

22
Tyson

Avec un petit bidouillage, vous pourrez peut-être obtenir l'effet que vous recherchez. Mais il pourrait ne pas être en mesure de passer l'examen de l'application.

-(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])];

            }
        }
    }
}

L’application que j’avais utilisée pour décoder la hiérarchie des vues était la suivante: http://revealapp.com/

Le résultat final est comme ça: Green Key

32
Ömer Karışman

Vous ne pouvez pas changer la couleur de teinte du bouton, mais vous pouvez définir keyboard Tint color en utilisant UIKeyboardAppearance

image

Exemple: yourTextField.keyboardAppearance = UIKeyboardAppearanceDark;

Voici un très beau document fourni par Apple, jetez un oeil ici:

Gestion du clavier

4
Nitin Gohel
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)
        }
    }
}

Voici une carte de couleur des clés dans la UIKBKeyplaneView

0
Callam