我该如何改变UITextField
中光标的颜色?
我该如何改变UITextField
中光标的颜色?
在iOS 7中,您可以简单地更改UITextField
的tintColor
属性。这将影响文本光标和文本选择突出显示颜色的颜色。
您可以在代码中执行此操作...
textField.tintColor = [UIColor redColor];
在Swift 4中:
textField.tintColor = UIColor.red
...或在Interface Builder中:
您还可以使用UITextField
外观代理同时对应用程序中的所有文本字段进行此操作:
[[UITextField appearance] setTintColor:[UIColor redColor]];
在 Swift 4 中:
UITextField.appearance().tintColor = UIColor.red
以下是模拟器截图,展示了一个普通的iOS 7文本框在色调设置为红色后的外观。
文字光标截图:
文字选择截图:
UITextfield
有一个叫做textInputTraits
的属性。其中UITextInputTraits
的一个私有属性是insertionPointColor
。[[addNewCategoryTextField textInputTraits] setValue:[UIColor redColor]
forKey:@"insertionPointColor"];
[[self.searchTextField valueForKey:@"textInputTraits"] setValue:[UIColor redColor] forKey:@"insertionPointColor"];
setInsertionPointColor:
方法。有关更多详细信息,请参见NSTextView参考文档。UITextField
对象,那么就不行了。这只适用于iPhone SDK。 - Rob KenigerDurgesh的方法确实有效。
我也多次使用这样的KVC解决方案。尽管它似乎没有文档记录,但它确实可行。坦白说,在这里你不使用任何私有方法 - 只使用合法的键值编码。
这与[addNewCategoryTextField textInputTraits]大不相同。
P.S. 昨天我的新应用程序已经在AppStore上发布,使用这种方法没有任何问题。而且这并不是我第一次在更改一些只读属性(如navigationBar)或私有变量时使用KVC。
要在整个应用程序中更改UITextField/UITextView
的光标
颜色
,可以使用外观代理,如下所示:
UITextField.appearance().tintColor = .green
UITextView.appearance().tintColor = .green