我想知道在iOS中更改UITextField
(和UITextView
,如果它的答案相同)中光标/插入符的颜色。我已经看到了OSX开发的答案,但对iOS来说没什么。
这甚至可能吗?
答案 0 :(得分:472)
如果你的目标是iOS 7+,那么这一过程就变得容易了。只需使用外观代理使用光标更改字段的tintColor,它将应用于整个应用程序:
Swift 3.0:
UITextField.appearance().tintColor = .black
目标-C:
[[UITextField appearance] setTintColor:[UIColor blackColor]];
相同的答案适用于单个UITextView:
Swift 3.0:
myTextField.tintColor = .black
目标-C
[myTextField setTintColor:[UIColor blackColor]];
答案 1 :(得分:43)
使用iOS7,您只需更改textField的tintColor
即可答案 2 :(得分:18)
斯威夫特3:
UITextField.appearance().tintColor = UIColor.black
UITextView.appearance().tintColor = UIColor.black
答案 3 :(得分:13)
注意:此答案已过期,仅适用于iOS 7之前的开发。请参阅iOS 7中使用外观代理的1行解决方案的其他答案。
在我正在处理的项目中遇到同样的问题后,我得到了这个问题。
我设法创建了一个将被AppStore审核小组接受的解决方案,因为它不使用任何现有的私有API。
我创建了一个名为DGTextField的控件,它扩展了UITextField。
答案 4 :(得分:6)
为from flask import Flask, request, Response, json
import base64
app = Flask(__name__)
@app.route('/test', methods=['GET','POST'])
def route():
open_read = open('my_file.zip').read()
encoded = base64.b64encode(open_read)
dict_data = {'str': str(), 'list': list(), 'dict': dict(), 'encoded': encoded}
return Response(json.dumps(dict_data), mimetype='text/plain')
if __name__ == '__main__':
app.run('0.0.0.0', 5000)
和response = requests.post('http://127.0.0.1:5000/test')
response_json = response.json()
encoded = response_json['encoded']
decoded = base64.b64decode(encoded)
dst_filepath = "my_zip.zip"
with open(dst_filepath, 'w') as _file:
_file.write(decoded)
设置tintColor
的工作方式不同。
对于UITextField
而言,您无需在更新UITextView
后更改其他颜色来调用其他代码,但对于UITextField
则需要。
因此,将tintColor
设置为UITextView
(在IB或代码中都没有关系)之后,您需要调用tintColor
才能应用它(实际上它将通过文本视图的配置到其子视图层次结构。
答案 5 :(得分:4)
这对我来说非常有用:
UITextField.tintColor = UIColor.blackColor()
您也可以在故事板中设置:https://stackoverflow.com/a/18759577/3075340
答案 6 :(得分:3)
更通用的方法是设置UIView的外观为tintColor。
UIColor *myColor = [UIColor purpleColor];
[[UIView appearance] setTintColor:myColor];
如果您使用许多默认UI元素,则会有意义。
答案 7 :(得分:1)
只能通过访问私有财产,因此可能会导致Apple AppStore应用程序被拒绝。
答案 8 :(得分:1)
尝试,它为我工作。
[[self.textField valueForKey:@"textInputTraits"] setValue:[UIColor redColor] strong textforKey:@"insertionPointColor"];
答案 9 :(得分:0)
Durgesh的方法确实有效。
我也多次使用过这样的KVC解决方案。 尽管它似乎没有文档,但它的工作原理。坦白说,你不要使用任何 这里的私有方法 - 只有合法的键值编码。
P.S。昨天我的新应用程序出现在AppStore,没有遇到任何问题。当我使用KVC更改一些只读属性(如navigatonBar)或私有ivars时,这不是第一种情况。
答案 10 :(得分:0)
如果UITextField
来自UISearchBar
,则首先从textField
获取searchBar
,然后应用tintColor
属性:
let textFieldInsideSearchBar = searchBar.value(forKey: "searchField") as? UITextField
textFieldInsideSearchBar?.tintColor = UIColor.lightGray
答案 11 :(得分:0)
雨燕4
在viewDidLoad()中,只需调用以下代码:
代码示例
//txtVComplaint is a textView
txtVComplaint.tintColor = UIColor.white
txtVComplaint.tintColorDidChange()
答案 12 :(得分:0)
我认为,如果需要一些自定义颜色,则可以转到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上进行了测试
答案 13 :(得分:0)
对于在SwiftUI中搜索Textfield
的用户来说,这是accentColor
:
TextField("Label", text: $self.textToBind).accentColor(Color.red)