Мне интересно об изменении цвета курсора / каретки в UITextField
(И UITextView
если это тот же ответ) в iOS. Я видел ответы для разработки OSX, но ничего для iOS.
Это вообще возможно?
ios
colors
uitextfield
cursor
uitextview
RileyE
источник
источник
UITextField
, в том числе о том, как это сделать в Интерфейсном Разработчике, по адресу stackoverflow.com/a/18759577/1709587Ответы:
Если вы ориентируетесь на iOS 7+, это стало намного проще. Просто измените
tintColor
поле с помощью курсора, используя внешний вид прокси, и это будет применяться во всем приложении:Swift 3.0:
Objective-C:
Тот же ответ относится к человеку
UITextField
:Swift 3.0:
Objective-C
источник
С iOS7 вы можете просто изменить tintColor textField
источник
Свифт 3:
источник
Примечание. Этот ответ устарел и должен использоваться только для разработки до iOS 7. Посмотрите другие ответы для однострочного решения с использованием внешнего прокси в iOS 7.
Я пришел к этому вопросу после того, как столкнулся с той же проблемой в проекте, над которым работал.
Мне удалось создать решение, которое будет принято командой разработчиков AppStore, так как оно не использует существующие частные API.
Я создал элемент управления с именем DGTextField, который расширяет UITextField.
источник
Это работает, если вы установите его в коде, потому что каким-то образом триггер цвета не делает этого в Интерфейсном Разработчике (Xcode 6.1.1). Хорошо подходит без необходимости менять внешний вид прокси.
источник
Настройка
tintColor
дляUITextField
иUITextView
работает по-другому. ПокаUITextField
вам не нужно вызывать дополнительный код после обновления,tintColor
чтобы изменить цвет курсора, ноUITextView
вам нужно.Таким образом, после установки
tintColor
дляUITextView
(это не имеет значения в IB или в коде) вам нужно позвонитьtextView.tintColorDidChange()
, чтобы применить его (на самом деле он передаст конфигурацию текстового представления в иерархию подпредставлений).источник
Это сработало для меня в быстром:
Вы также можете установить это в раскадровке: https://stackoverflow.com/a/18759577/3075340
источник
Instance member 'tintcolor' cannot be used on type 'UITextField'
Более общим подходом было бы установить tintColor внешнего вида UIView.
Имеет смысл, если вы используете много элементов пользовательского интерфейса по умолчанию.
источник
[UIView appearance]
Попробуйте, это работает для меня.
источник
Это возможно только при доступе к частной собственности, что может привести к отклонению приложения Apple AppStore.
взгляните на этот вопрос Stackoverflow
источник
Подход Дургеша работает.
Я также использовал такие решения KVC много раз. Несмотря на это, кажется, без документов, но это работает. Честно говоря, здесь вы не используете никаких частных методов - только кодирование значения ключа, которое является законным.
PS Вчера мое новое приложение появилось в AppStore без проблем с таким подходом. И это не первый случай, когда я использую KVC при изменении некоторых свойств, доступных только для чтения (например, navatonBar) или частных иваров.
источник
Для версии Interface Builder со Swift
источник
Если
UITextField
это from,UISearchBar
то сначала получитеtextField
from,searchBar
а затем применитеtintColor
свойство:источник
Swift 4
В viewDidLoad () просто позвоните ниже код:
ОБРАЗЕЦ КОДА
источник
Я думаю, что если вам нужны некоторые пользовательские цвета, вы можете перейти в
Assets.xcassets
папку, щелкнуть правой кнопкой мыши и выбратьNew Color Set
, как только вы создали свой цвет, который вы задали, дайте ему имя для повторного использования.И вы можете использовать это так:
Протестировано на macOS 10.15 / iOS 13 / Swift 5
источник
Для людей, ищущих эквивалент в SwiftUI для
Textfield
этогоaccentColor
:источник