W Objective-C używamy tego kodu do ustawiania kodów kolorów RGB dla widoków:
#define UIColorFromRGB(rgbValue)
[UIColor colorWithRed:((float)((rgbValue & 0xFF0000) >> 16))/255.0 green:((float)((rgbValue & 0xFF00) >> 8))/255.0 blue:((float)(rgbValue & 0xFF))/255.0 alpha:1.0]
view.backgroundColor=UIColorFromRGB(0x209624);
Jak mogę tego używać w Swift?
Odpowiedzi:
Oto wersja tej funkcji w języku Swift (w celu uzyskania reprezentacji
UInt
wartości w formacie UIColor ):źródło
Chciałem położyć
ale to nie zadziałało.
Więc użyłem:
dla Swift
To jest obejście, które znalazłem.
źródło
Bardzo podobała mi się odpowiedź Nate'a Cooka, ale chciałem czegoś bardziej idiomatycznego. Uważam, że jest to naprawdę dobry przypadek użycia wygodnego inicjatora za pomocą niestandardowego rozszerzenia.
Teraz można tego użyć w następujący sposób:
Zalecałbym małpę łatanie takich klas UIKit w swoim własnym kodzie klienta, a nie w bibliotekach.
źródło
0x
nim następuje dowolny kolor szesnastkowy - color-hex.comźródło
Najprostszym sposobem programowego dodawania kolorów jest użycie ColorLiteral .
Po prostu dodaj właściwość ColorLiteral, jak pokazano w przykładzie, Xcode wyświetli monit z całą listą kolorów, które możesz wybrać. Zaletą takiego rozwiązania jest mniejszy kod, dodanie wartości HEX lub RGB . Otrzymasz również ostatnio używane kolory z storyboardu.
Przykład: self.view.backgroundColor = ColorLiteral
źródło
Jeśli zaczynasz od łańcucha (nie szesnastkowego), jest to funkcja, która pobiera ciąg szesnastkowy i zwraca UIColor.
(Ciągi szesnastkowe można wprowadzić w dowolnym formacie:
#ffffff
lubffffff
)Stosowanie:
Swift 4:
Swift 3:
Swift 2:
Źródło: arshad / gist: de147c42d7b3063ef7bc
źródło
W przypadku Xcode 9 użyj
UIColor
z wartościami RGB.Zapowiedź:
Zobacz dodatkową dokumentację Apple dotyczącą UIColor .
źródło
UIColorFromRGB w Swift 4
źródło
Szybko użyłem następujących.
źródło
rozwiązanie dla formatu argb:
stosowanie:
źródło
To działa dla mnie szybko. Spróbuj tego
źródło
dodanie opcji swift 3:
źródło
Nie możesz używać złożonych makr, jak
#define UIColorFromRGB(rgbValue)
w swift. Zastąpienie prostego makra w swift to stałe globalneWciąż złożone makra akceptujące parametry nie są obsługiwane przez swift. możesz zamiast tego użyć funkcji
Fragment z Używanie Swift z kakao i celem C.
Sprawdź odpowiedź @Nate Cooks, aby uzyskać tutaj wersję Swift tej funkcji
źródło
Możesz użyć tego:
źródło
Odpowiedź Nate'a Cooka jest całkowicie poprawna. Dla większej elastyczności trzymam w zestawie następujące funkcje:
A tak ich używam:
Mam nadzieję, że to pomoże. Wszystko jest testowane w Swift 3 / Xcode 8.
źródło
To fajne rozszerzenie dla UIColor. Podczas tworzenia obiektów UIColor można używać wartości wyliczeniowych (szesnastkowych, ciągowych) i bezpośrednich wartości ciągu.
Rozszerzenie, na które zasługujemy https://github.com/ioramashvili/UsefulExtensions/blob/master/Extensions.playground/Pages/UIColor.xcplaygroundpage/Contents.swift
źródło
Widzę, że została już udzielona, ale nadal mam nadzieję, że jedna wkładka pomoże w lepszy sposób.
Zaktualizowano:: Zmiany dokonane zgodnie z przykładem wyjaśnionym przez autora pytania, aby podać wartości szesnastkowe
źródło
W Swift3, jeśli zaczynasz od koloru, który już wybrałeś, możesz pobrać wartość RGB online ( http://imagecolorpicker.com ) i użyć tych wartości zdefiniowanych jako UIColor. To rozwiązanie implementuje je jako tło:
@Vadym wspomniał o tym powyżej w komentarzach i ważne jest, aby zdefiniować CGFloat z pojedynczym punktem dziesiętnym
źródło
źródło
Można to po prostu zrobić, używając tej inicjalizacji
źródło