Как я могу создать UIColor
из шестнадцатеричного формата строки, например #00FF00
?
ios
cocoa-touch
uicolor
Rupesh
источник
источник
Ответы:
Я нашел самый простой способ сделать это с помощью макроса. Просто включите его в заголовок, и он будет доступен на протяжении всего проекта.
макрос uicolor с шестнадцатеричными значениями
Также отформатированная версия этого кода:
Применение:
источник
Краткое решение:
источник
if ( [hexString rangeOfString:@"#"].location == 0 )
передsetScanLocation
строкой, чтобы сделать#
необязательным.У меня есть решение, которое на 100% совместимо со строками шестнадцатеричного формата, используемыми в Android, и которые я нашел очень полезными при разработке межплатформенных мобильных приложений. Это позволяет мне использовать одно цветовое небо для обеих платформ. Не стесняйтесь использовать повторно без указания авторства или по лицензии Apache, если хотите.
источник
colorComponentFrom:start:length:
, не должны ли выreturn hexComponent / 0xFF; // divide by 255, not 256
? Наибольшее шестнадцатеричное значение, которое вы должны получить, равно 0xFF, то есть это то, что вы должны делить на 0xFF (255).[@"#538aa4" toColor]
Есть хороший пост о том, как решить вопрос ОП по извлечению
UIColor
из шестнадцатеричной строки. Представленное ниже решение отличается от других тем, что поддерживает строковые значения, которые могут содержать «0x» или «#» с префиксом представления шестнадцатеричной строки ... (см. Раздел «Использование»).Вот основная часть ...
Вспомогательный метод ...
Применение:
Полная справочная статья
Свифт 2+
Я перенес это решение в Swift 2.2. Обратите внимание, что я изменил
alpha
параметр, чтобы использовать значение по умолчанию 1.0. Я также обновил тип intUInt32
в соответствии с требованиямиNSScanner
класса в Swift 2.2.Свифт 4+
Используя ту же логику с изменениями, примененными для Swift 4,
источник
alpha
чтобы когда - либо быть установлен в ноль? Поскольку этот метод дает людям такую возможность, и если кто-то решит установитьalpha
значение «ноль», принудительное развертывание этого дополнительного параметра неизбежно приведет к падению. Я не редактировал это, хотя, в случае, если есть какое-то оправдание, о котором я не знаю.Это функция, которая принимает шестнадцатеричную строку и возвращает UIColor.
(Вы можете ввести шестнадцатеричные строки в любом формате:
#ffffff
илиffffff
)Применение:
Свифт 4:
Свифт 3:
Свифт 2:
Источник: аршад / суть: de147c42d7b3063ef7bc
источник
Используйте эту категорию:
в файле UIColor + Hexadecimal.h
в файле UIColor + Hexadecimal.m
В классе вы хотите использовать его:
а также:
источник
Отличная реализация Swift (обновлена для Xcode 7) с использованием расширений, собранных из множества разных ответов и мест. Вам также понадобятся расширения строк в конце.
Использование:
ПРИМЕЧАНИЕ. Я добавил опцию для 2 дополнительных цифр в конце стандартного шестнадцатеричного шестнадцатеричного значения для альфа-канала (введите значение
00
-99
). Если это вас оскорбляет, просто удалите его. Вы можете реализовать это для передачи необязательного альфа-параметра.Расширение:
Строковые расширения:
источник с плавающей
точкой
источник
countElements()
был замененcount()
на Swift 1.2, он встроен в язык. Я обновил свой ответ, чтобы отразить это.Вы можете сделать расширение как это
И использовать его где угодно, как это
источник
#00FF00
явно предназначена для символьной строки. Как уже говорили другие, это просто, кратко. Но если он не работает со строками, он не может ответить на вопрос о том, как обращаться со строками.Я не знаю встроенного преобразования шестнадцатеричной строки в
UIColor
(илиCGColor
). Тем не менее, вы можете легко написать пару функций для этой цели - например, увидеть разработку iphone с доступом к компонентам uicolorисточник
+colorWithHexString:
не работает. По крайней мере, в моем случае. :)Я нашел хорошую
UIColor
категорию для этого, UIColor + PXExtensions .Применение:
UIColor *mycolor = [UIColor pxColorWithHexValue:@"#BADA55"];
И, в случае, если ссылка на мою суть не удалась, вот фактический код реализации:
источник
Быстрая версия. Используйте в качестве функции или расширения.
функция расширение Как позвонить Вы также можете определить свойHex Color
из конструктора интерфейса.источник
Это еще одна альтернатива.
источник
Вы можете использовать различные онлайн-инструменты для преобразования строки HEX в реальный UIColor. Проверьте uicolor.org или UI Color Picker . Вывод будет преобразован в код Objective-C, например:
Который вы могли бы встроить в свое приложение. Надеюсь это поможет!
источник
SWIFT 4
Вы можете создать хороший
convenience
конструктор в расширении следующим образом:И использовать его позже, как
источник
Применение:
источник
Это хорошо с поддержкой cocoapod
https://github.com/mRs-/HexColors
источник
Еще одна версия с альфа
источник
Быстрый эквивалент ответа @ Tom, хотя и получает значение RGBA Int для поддержки прозрачности:
И если вы хотите использовать его из строки, вы можете использовать strtoul:
источник
Вот
Swift 1.2
версия, написанная как расширение дляUIColor
. Это позволяет вам сделатьКоторый я считаю самым естественным способом сделать это.
источник
let greenRange = ...
я получаю исключение:fatal error: can not increment endIndex
Другая реализация, разрешающая строки типа
"FFF"
или"FFFFFF"
и использующая альфа:источник
обновлен для Swift 1.2
источник
Создать элегантное расширение для
UIColor
:Создать красный цвет:
источник
источник
источник
Мне нравится обеспечивать альфа помимо цвета, поэтому я пишу свою собственную категорию
прост в использовании, как это
источник
Я создал удобный init для этого:
тогда вы можете создать UIColor в любом месте вашего проекта, вот так:
надеюсь это поможет...
источник
Вы можете создать класс расширения UIColor как: -
расширение UIColor {
// MARK: - getColorFromHex / ** Эта функция преобразует цветной шестнадцатеричный код в RGB.
}
источник
Для Swift 2.0+. Этот код прекрасно работает для меня.
Этот код включает проверку формата строки. например
И, насколько я знаю, мой код не имеет недостатков, поскольку он поддерживает семантику невыполненных условий и возвращает необязательное значение. И это должно быть лучшим ответом.
источник
Версия решения Swift 2.0, которая будет обрабатывать альфа-значение цвета и с идеальной обработкой ошибок, находится здесь:
источник
Применение
источник