我想了解一下改变光标/插入符号的颜色中UITextField
(和UITextView
如果同样的答案)中的iOS。 我已经看到了OSX发展的答案,但没有为iOS。
这甚至可能吗?
我想了解一下改变光标/插入符号的颜色中UITextField
(和UITextView
如果同样的答案)中的iOS。 我已经看到了OSX发展的答案,但没有为iOS。
这甚至可能吗?
如果你的目标iOS的7 +,这已经变得更加容易。 只需用外观代理更改字段的tintColor用光标,它将适用于整个应用程序:
雨燕3.0:
UITextField.appearance().tintColor = .black
Objective-C的:
[[UITextField appearance] setTintColor:[UIColor blackColor]];
同样的答案适用于个人的UITextView:
雨燕3.0:
myTextField.tintColor = .black
Objective-C的
[myTextField setTintColor:[UIColor blackColor]];
随着iOS7,你可以简单地改变文本框的tintColor
斯威夫特3:
UITextField.appearance().tintColor = UIColor.black
UITextView.appearance().tintColor = UIColor.black
注意:这个答案是过时的,应仅用于前期的iOS 7的开发。 看到用于使用在IOS 7的外观代理一个1线溶液中的其它的答案。
我来到了这个问题后,我在一个项目我工作面临着同样的问题。
我设法创建将由AppStore的审查小组被接受,因为它不使用任何现有的私人API的解决方案。
我创建了一个名为DGTextField延伸UITextField控件。
yourTextField.tintColor = [UIColor whiteColor];
它的工作原理,如果你在代码中设置它,“COS不知何故颜色触发没有做它在界面生成器 (Xcode的6.1.1)。 它适合良好,没有必要改变什么样子的代理。
设置tintColor
为UITextField
和UITextView
工作方式不同。 虽然UITextField
你不需要更新后调用额外的代码tintColor
改变光标颜色,但UITextView
需要。
因此,设置完成后tintColor
为UITextView
(它不IB或代码问题),你需要调用textView.tintColorDidChange()
以应用它(实际上它会向下传递文本视图的config其子视图层次)。
这迅速为我工作:
UITextField.tintColor = UIColor.blackColor()
您还可以设置在这个故事板: https://stackoverflow.com/a/18759577/3075340
一个更普遍的做法是设置了UIView的外观的tintColor。
UIColor *myColor = [UIColor purpleColor];
[[UIView appearance] setTintColor:myColor];
如果您使用的许多默认的UI元素是有意义的。
它通过访问私有财产,因此可能会导致苹果应用商店应用排斥才是可能的。
看看这个问题#1
尝试,它为我工作。
[[self.textField valueForKey:@"textInputTraits"] setValue:[UIColor redColor] strong textforKey:@"insertionPointColor"];
Durgesh的做法确实工作。
我也用这样的KVC解决方案多次。 尽管这似乎是无证的,但它的工作原理。 坦率地说,你不要在这里使用任何私有方法 - 仅键 - 值编码是合法的。
PS昨天我的新的应用程序出现在AppStore中没有使用这种方法的任何问题。 而且这还不是第一种情况,当我改变了一些只读属性(如navigatonBar)或私人的ivars使用KVC。
对于Interface Builder的版本雨燕
@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
斯威夫特4
在viewDidLoad中()只需要调用下面的代码:
代码示例
//txtVComplaint is a textView
txtVComplaint.tintColor = UIColor.white
txtVComplaint.tintColorDidChange()