Hoe kan ik programmatisch de standaard blauwe kleur van iOS 7 krijgen?

Ik maak aangepaste elementen in mijn app en wil het uiterlijk van het nieuwe iOS evenaren. iOS 7 heeft ons een veel voorkomende lichtere blauwe kleur geïntroduceerd, de standaardkleur of tint voor verschillende elementen, waaronder de systeemknop, gesegmenteerde bediening, enz. Ze hebben het gemakkelijk gemaakt om de kleur te selecteren met IB, zoals hier te zien is:

voer hier de afbeeldingsbeschrijving in

Ik heb echter niet gevonden hoe ik eenvoudig programmatisch toegang tot de kleur kan krijgen. Ik heb de UIColor-documentatiebekeken en die is er niet lijkt een accessoire te zijn voor de blauwe systeemkleur in de klasse zelf.

Hier is mijn vraag: bestaat er een eenvoudige accessoire voor deze kleur? [UIColor ?]of iets dergelijks? Zo niet, weet iemand dan de exacte RGB-waardenvoor die kleur?


Antwoord 1, autoriteit 100%

Gebruik self.view.tintColorvan een view-controller, of self.tintColorvan een UIView-subklasse.


Antwoord 2, autoriteit 91%

Het lijkt [UIColor colorWithRed:0.0 green:122.0/255.0 blue:1.0 alpha:1.0]te zijn.

schermafbeelding met het kleurenvenster


Antwoord 3, autoriteit 36%

iOS 7 standaard blauwe kleur is 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];

Antwoord 4, autoriteit 20%

Volgens de documentatie voor UIButton:

In iOS v7.0 leiden alle subklassen van UIView hun gedrag voor tintColor af van de basisklasse. Zie de bespreking van tintColor op UIView-niveau voor meer informatie.

Ervan uitgaande dat u de tintColor niet wijzigt voordat u de standaardwaarde gebruikt, kunt u het volgende gebruiken:

self.view.tintColor

Antwoord 5, autoriteit 10%

Hier is een eenvoudige methode om de standaard systeemtintkleur te krijgen:

+ (UIColor*)defaultSystemTintColor
{
   static UIColor* systemTintColor = nil;
   static dispatch_once_t onceToken;
   dispatch_once(&onceToken, ^{
      UIView* view = [[UIView alloc] init];
      systemTintColor = view.tintColor;
   });
   return systemTintColor;
}

Antwoord 6, autoriteit 9%

Hex kleurcode

#007AFF

en je hebt deze bibliotheek nodig
https://github.com/thii/SwiftHEXColors

ps. iOS, Swift


Antwoord 7, autoriteit 7%

snelle 4-weg:

extension UIColor {
  static let system = UIView().tintColor!
}

Antwoord 8, autoriteit 6%

Native extensie met vooraf gedefinieerde systeemkleuren geeft wat u zoekt:

// System colors
extension UIColor {
    /* Some colors that are used by system elements and applications.
     * These return named colors whose values may vary between different contexts and releases.
     * Do not make assumptions about the color spaces or actual colors used.
     */
    ... 
    @available(iOS 7.0, *)
    open class var systemBlue: UIColor { get }
    ... 
}

Je kunt het direct gebruiken:

myView.tintColor = .systemBlue

Antwoord 9, autoriteit 5%

Verkrijg de kleur automatisch met deze code:

static let DefaultButtonColor = UIButton(type: UIButtonType.System).titleColorForState(.Normal)!

Antwoord 10, autoriteit 4%

De UIWindow.tintColormethode werkte niet voor mij in iOS8 (hij was nog steeds zwart), dus ik moest dit doen:

let b = UIButton.buttonWithType(UIButtonType.System) as UIButton
var color = b.titleColorForState(.Normal)

Dit gaf de juiste blauwe tint die te zien is in een UIBarButtonItem


Antwoord 11, autoriteit 3%

Vanaf iOS 7 is er een API en je kunt de tintkleur krijgen (en instellen) met:

self.view.tintColor

Of als je de CGColor nodig hebt:

self.view.tintColor.CGColor

Antwoord 12, autoriteit 2%

In veel gevallen is wat je nodig hebt gewoon

[self tintColor] 
// or if in a ViewController
[self.view tintColor]

of voor snel

self.tintColor
// or if in a ViewController
self.view.tintColor

Antwoord 13, autoriteit 2%

Knoei niet met view.tintColorof extensies, maar gebruik gewoon dit:

UIColor.systemBlue

Antwoord 14

terwijl je de kleur instelt, kun je de kleur zo instellen

[UIColor colorWithRed:19/255.0 green:144/255.0 blue:255/255.0 alpha:1.0]

Antwoord 15

Als u op de volgende manier een categorie aan UIColor toevoegt, wordt deze op elk moment beschikbaar voor u of kunt u zelfs de definitie ervan in uw code wijzigen:

@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];
}

Zodra u de categorie in uw code heeft geïmporteerd, kunt u de kleur oproepen met:

UIColor *myBlueColor = [UIColor iOSblueColor];

Other episodes