Je crée des éléments personnalisés dans mon application et souhaite correspondre à l'aspect et à la convivialité du nouvel iOS. iOS 7 nous a présenté une couleur bleu clair très commune, la couleur ou la teinte par défaut de plusieurs éléments, notamment le bouton système, le contrôle segmenté, etc. Ils ont facilité la sélection de la couleur à l'aide de IB, comme illustré ici:
Cependant, je n'ai pas trouvé comment accéder facilement à la couleur par programmation. J'ai vérifié le documentation UIColor , et il ne semble pas exister d'accesseur pour la couleur système bleue de la classe elle-même.
Voici ma question: existe-t-il un simple accesseur pour cette couleur? [UIColor ?]
ou quelque chose du genre? Sinon, quelqu'un connaît-il les valeurs RVB exactes pour cette couleur?
Utilisez self.view.tintColor
depuis un contrôleur de vue ou self.tintColor
depuis une sous-classe UIView
.
Il semble que ce soit [UIColor colorWithRed:0.0 green:122.0/255.0 blue:1.0 alpha:1.0]
.
la couleur bleue par défaut d'iOS 7 est R:0.0 G:122.0 B:255.0
UIColor *ios7BlueColor = [UIColor colorWithRed:0.0 green:122.0/255.0 blue:1.0 alpha:1.0];
Selon la documentation pour UIButton:
Dans iOS v7.0, toutes les sous-classes d'UIView dérivent leur comportement pour tintColor de la classe de base. Voir la discussion sur tintColor au niveau de UIView pour plus d'informations.
En supposant que vous ne modifiez pas la teinte avant de saisir la valeur par défaut, vous pouvez utiliser:
self.view.tintColor
Voici une méthode simple pour obtenir la couleur de teinte système par défaut:
+ (UIColor*)defaultSystemTintColor
{
static UIColor* systemTintColor = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
UIView* view = [[UIView alloc] init];
systemTintColor = view.tintColor;
});
return systemTintColor;
}
Code de couleur hexadécimale
#007AFF
et vous avez besoin de cette bibliothèque https://github.com/thii/SwiftHEXColors
ps. iOS, Swift
Swift 4 voies:
extension UIColor {
static let system = UIView().tintColor!
}
Obtenez la couleur automatiquement en utilisant ce code:
static let DefaultButtonColor = UIButton(type: UIButtonType.System).titleColorForState(.Normal)!
Cette extension vous donne la couleur bleue système native.
extension UIColor {
static var systemBlue: UIColor {
return UIButton(type: .system).tintColor
}
}
Usage:
myView.tintColor = .systemBlue
La méthode UIWindow.tintColor
ne fonctionnait pas pour moi dans iOS8 (elle était toujours en noir). Je devais donc procéder comme suit:
let b = UIButton.buttonWithType(UIButtonType.System) as UIButton
var color = b.titleColorForState(.Normal)
Cela a donné la bonne teinte bleue vue dans un UIBarButtonItem
Depuis iOS 7, il existe une API et vous pouvez obtenir (et définir) la couleur de teinte avec:
self.view.tintColor
Ou si vous avez besoin de CGColor:
self.view.tintColor.CGColor
Dans de nombreux cas, ce dont vous avez besoin est juste
[self tintColor]
// or if in a ViewController
[self.view tintColor]
ou pour Swift
self.tintColor
// or if in a ViewController
self.view.tintColor
tout en fixant la couleur, vous pouvez définir la couleur comme ceci
[UIColor colorWithRed:19/255.0 green:144/255.0 blue:255/255.0 alpha:1.0]
Ajouter une catégorie à UIColor de la manière suivante vous la rendra disponible chaque fois que vous en aurez besoin ou même changera sa définition dans votre code:
@interface UIColor (iOS7Colors)
+ (instancetype)iOS7blueColor;
@end
@implementation UIColor (SpecialColors)
+ (instancetype)iOS7blueColor;
{
return [UIColor colorWithRed:0.0f green:0.22f blue:122.0/255.0 alpha:1.0f];
}
Une fois que vous avez importé la catégorie dans votre code, vous pouvez appeler la couleur en utilisant:
UIColor *myBlueColor = [UIColor iOSblueColor];