我想知道如何在iOS中UITextField
(UITextView
如果答案相同)更改光标/插入符号的颜色。我已经看到了OSX开发的答案,但没有看到iOS的答案。
这有可能吗?
我想知道如何在iOS中UITextField
(UITextView
如果答案相同)更改光标/插入符号的颜色。我已经看到了OSX开发的答案,但没有看到iOS的答案。
这有可能吗?
Answers:
如果您的目标是iOS 7+,则此操作会变得更加容易。只需tintColor
使用外观代理使用光标更改字段的,它将应用于整个应用程序:
Swift 3.0:
UITextField.appearance().tintColor = .black
目标C:
[[UITextField appearance] setTintColor:[UIColor blackColor]];
同样的答案适用于个人UITextField
:
Swift 3.0:
myTextField.tintColor = .black
物镜
[myTextField setTintColor:[UIColor blackColor]];
斯威夫特3:
UITextField.appearance().tintColor = UIColor.black
UITextView.appearance().tintColor = UIColor.black
注意:此答案已过时,应仅用于iOS 7之前的开发。在iOS 7中使用外观代理查看1行解决方案的其他答案。
在我正在从事的项目中遇到相同的问题后,我想到了这个问题。
我设法创建了一个解决方案,由于它不使用任何现有的私有API,因此将被AppStore审核小组接受。
我创建了一个名为DGTextField的控件,该控件扩展了UITextField。
yourTextField.tintColor = [UIColor whiteColor];
如果您在代码中进行设置,则可以使用它,因为“在某种程度上,颜色触发在Interface Builder(Xcode 6.1.1)中不起作用”。非常适合,而无需更改任何外观代理。
这对我迅速起作用:
UITextField.tintColor = UIColor.blackColor()
您也可以在情节提要中进行设置:https : //stackoverflow.com/a/18759577/3075340
Instance member 'tintcolor' cannot be used on type 'UITextField'
一种更通用的方法是设置UIView外观的tintColor。
UIColor *myColor = [UIColor purpleColor];
[[UIView appearance] setTintColor:myColor];
如果您使用许多默认的UI元素,这是有道理的。
[UIView appearance]
试试,它为我工作。
[[self.textField valueForKey:@"textInputTraits"] setValue:[UIColor redColor] strong textforKey:@"insertionPointColor"];
只有通过访问私有财产才有可能,因此可能导致Apple AppStore应用被拒绝。
Durgesh的方法确实有效。
我也多次使用这样的KVC解决方案。尽管它似乎没有证件,但是可以工作。坦白说,您在这里不使用任何私有方法-仅使用合法的键值编码。
PS昨天,我的新应用程序出现在AppStore中,这种方法没有任何问题。当我使用KVC更改某些只读属性(如navigatonBar)或私有ivars时,这不是第一种情况。
对于带有Swift的Interface Builder版本
@IBOutlet weak var tvValue: UITextView! {
didSet {
tvValue.tintColor = .black
}
}
如果UITextField
from是from,UISearchBar
则首先获取textField
from searchBar
,然后应用tintColor
property:
let textFieldInsideSearchBar = searchBar.value(forKey: "searchField") as? UITextField
textFieldInsideSearchBar?.tintColor = UIColor.lightGray
我认为,如果您想要一些自定义颜色,则可以转到Assets.xcassets
文件夹,右键单击并选择New Color Set
,一旦创建了所设置的颜色,请为其命名以重新使用它。
您可以像这样使用它:
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
UITextField.appearance().tintColor = UIColor(named: "YOUR-COLOR-NAME") #here
}
}
在macOS 10.15 / iOS 13 / Swift 5上测试
UITextField
(包括如何在Interface Builder中执行此操作),请