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.
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:
Vous ne pouvez pas changer la couleur de teinte du bouton, mais vous pouvez définir keyboard
Tint color en utilisant UIKeyboardAppearance
Exemple: yourTextField.keyboardAppearance = UIKeyboardAppearanceDark;
Voici un très beau document fourni par Apple, jetez un oeil ici:
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