12 ответов:
если вы нацелены на iOS 7+, это было сделано намного проще. Просто измените оттенок поля с помощью курсора, используя прокси-сервер внешнего вида, и он будет применяться во всем приложении:
Swift 3.0:
UITextField.appearance().tintColor = .blackЦель-C:
[[UITextField appearance] setTintColor:[UIColor blackColor]];тот же ответ применяется для отдельного UITextView:
Swift 3.0:
myTextField.tintColor = .blackС
[myTextField setTintColor:[UIColor blackColor]];
Swift 3:
UITextField.appearance().tintColor = UIColor.black UITextView.appearance().tintColor = UIColor.black
Примечание: этот ответ устарел и должен использоваться только для разработки до iOS 7. См. другие ответы для решения 1 линии с использованием прокси-сервера внешнего вида в iOS 7.
Я пришел к этому вопросу после того, как столкнулся с той же проблемой в проекте, над которым я работал.
мне удалось создать решение, которое будет принято командой AppStore review, поскольку оно не использует существующие частные API.
Я создал элемент управления под названием DGTextField это расширяет UITextField.
yourTextField.tintColor = [UIColor whiteColor];это работает, если вы установите его в код, потому что как-то color trigger не делает этого в Построителе интерфейса (Xcode 6.1.1). Он хорошо подходит без необходимости менять какой-либо внешний вид прокси.
это сработало для меня в swift:
UITextField.tintColor = UIColor.blackColor()вы также можете установить это в раскадровке: https://stackoverflow.com/a/18759577/3075340
более общим подходом было бы установить оттенок внешнего вида UIView.
UIColor *myColor = [UIColor purpleColor]; [[UIView appearance] setTintColor:myColor];имеет смысл, если вы используете много элементов пользовательского интерфейса по умолчанию.
это возможно только при доступе к частной собственности и, следовательно, может привести к отклонению приложения Apple AppStore.
попробуйте, его работа для меня.
[[self.textField valueForKey:@"textInputTraits"] setValue:[UIColor redColor] strong textforKey:@"insertionPointColor"];
подход Дургеша действительно работает.
Я также использовал такие решения KVC много раз. Несмотря на то, что он кажется недокументированным, но он работает. Честно говоря, вы не используете никаких частные методы здесь - только кодирование ключ-значение, которое является законным.
P. S. Мой новый приложение появилось в AppStore без каких-либо проблем с таким подходом. И это не первый случай, когда я использую KVC при изменении некоторых свойств только для чтения (например, navigatonBar) или private ivars.
для версии Interface Builder с Swift
@IBOutlet weak var tvValue: UITextView! { didSet { tvValue.tintColor = .black } }
если
UITextFieldСUISearchBarзатем сначалаtextFieldСsearchBarи затем применитьtintColorсвойства:let textFieldInsideSearchBar = searchBar.value(forKey: "searchField") as? UITextField textFieldInsideSearchBar?.tintColor = UIColor.lightGray
Comments