Tworzę niestandardowe elementy w mojej aplikacji i chcę dopasować wygląd i styl nowego iOS. iOS 7 wprowadził do nas bardzo powszechny jaśniejszy niebieski kolor, domyślny kolor lub odcień dla kilku elementów, w tym przycisku systemowego, sterowania segmentowego itp. Ułatwili wybranie koloru za pomocą IB, jak pokazano tutaj:
Jednak nie znalazłem sposobu, aby łatwo uzyskać programowy dostęp do koloru. Sprawdziłem dokumentację UIColor i wydaje się, że nie ma żadnego akcesorium dla niebieskiego koloru systemowego w samej klasie.
Oto moje pytanie: czy istnieje prosty akcesorium dla tego koloru? [UIColor ?]
czy coś takiego? Jeśli nie, to czy ktoś zna dokładne wartości RGB dla tego koloru?
UIView().tintColor
, ale w rzeczywistości nie możesz. Nie jestem pewien, w którym momencie UIView otrzymuje zestaw kolorów odcieni ...UIWindow
lub może jego widok główny ma oryginalną wersję. Widoki dziedziczą kolor zabarwienia po wyższych widokach w łańcuchu respondentów, ale w twoim przykładzie nowy widok nie ma podglądu.self.view.tintColor
od wewnątrzUIViewController.viewDidLoad()
daje prawy niebieski.Wygląda na to, że tak
[UIColor colorWithRed:0.0 green:122.0/255.0 blue:1.0 alpha:1.0]
.źródło
UIColor(red: 0.0, green: 122.0/255.0, blue: 1.0, alpha: 1.0)
Domyślnym niebieskim kolorem iOS 7 jest
R:0.0 G:122.0 B:255.0
źródło
0x007aff
Zgodnie z dokumentacją dla UIButton:
Zakładając, że nie zmienisz tintColor przed pobraniem wartości domyślnej, możesz użyć:
źródło
sharedApplication()
nie makeyWindow
ztintColor
Oto prosta metoda uzyskania domyślnego koloru odcienia systemu:
źródło
dispatch_once
jest dość niski i jest pojedynczy, jeśli sprawdza się w zwykłym przypadku.UIColor
w wielu wątkach. Zawinięcie go wdispatch_once
pozwala na bezpieczne odzyskanie tego koloru na dowolnym wątku. Ponownie, koszty ogólne są bardzo niskie.Kod koloru szesnastkowego
i potrzebujesz tej biblioteki https://github.com/thii/SwiftHEXColors
ps. iOS, Swift
źródło
swift 4 way:
źródło
To rozszerzenie zapewnia systemowy kolor niebieski.
AKTUALIZACJA
Proszę zapomnieć o tym, co napisałem powyżej, właśnie się zorientowałem - istnieje natywne rozszerzenie ze wstępnie zdefiniowanymi kolorami systemowymi, których szukaliśmy, w tym niebieski system :
Możesz użyć go bezpośrednio:
źródło
static let system = UIView().tintColor!
Jest więc znacznie lepszy niż twój wariant.Uzyskaj kolor automatycznie, korzystając z tego kodu:
źródło
Ta
UIWindow.tintColor
metoda nie działała dla mnie w iOS8 (nadal była czarna), więc musiałem to zrobić:To dało właściwy niebieski odcień widoczny w
UIBarButtonItem
źródło
Z iOS 7 istnieje interfejs API i możesz uzyskać (i ustawić) kolor odcienia za pomocą:
Lub jeśli potrzebujesz CGColor:
źródło
W wielu przypadkach potrzebujesz tylko tego
lub dla szybkiego
źródło
ustawiając kolor, możesz ustawić taki kolor
źródło
/255.0
z każdąrgb
wartością?Dodanie kategorii do UIColor w następujący sposób sprawi, że będzie ona dostępna zawsze, gdy będziesz jej potrzebować, a nawet zmieni jej definicję w całym kodzie:
Po zaimportowaniu kategorii do kodu możesz wywołać kolor, używając:
źródło
blue
dored
w+ (instancetype)iOS7redColor;