私は、カーソルの色/キャレットの変更について思ったんだけどUITextField
(そしてUITextView
iOSの中でその同じ答えであれば)。OSX開発の答えを見てきましたが、iOSの答えはありません。
これは可能ですか?
私は、カーソルの色/キャレットの変更について思ったんだけどUITextField
(そしてUITextView
iOSの中でその同じ答えであれば)。OSX開発の答えを見てきましたが、iOSの答えはありません。
これは可能ですか?
回答:
iOS 7以降をターゲットにしている場合、これははるかに簡単になりました。tintColor
外観プロキシを使用してカーソルでフィールドのを変更するだけで、アプリ全体に適用されます。
Swift 3.0:
UITextField.appearance().tintColor = .black
Objective-C:
[[UITextField appearance] setTintColor:[UIColor blackColor]];
同じ答えが個人にも当てはまりますUITextField
。
Swift 3.0:
myTextField.tintColor = .black
Objective-C
[myTextField setTintColor:[UIColor blackColor]];
スウィフト3:
UITextField.appearance().tintColor = UIColor.black
UITextView.appearance().tintColor = UIColor.black
注:この回答は古くなっており、iOS 7より前の開発にのみ使用してください。iOS 7でAppearance Proxyを使用する1行のソリューションについては、他の回答を参照してください。
私が取り組んでいるプロジェクトで同じ問題に直面した後、私はこの質問に到着しました。
既存のプライベートAPIを使用していないため、AppStoreレビューチームに受け入れられるソリューションを作成できました。
UITextFieldを拡張するDGTextFieldというコントロールを作成しました。
yourTextField.tintColor = [UIColor whiteColor];
コードで設定すると機能します。「cosどういうわけか、カラートリガーは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アプリの拒否を引き起こす可能性があります。
ダーゲッシュのアプローチは機能します。
私もそのようなKVCソリューションを何度も使用しました。文書化されていないようですが、動作します。率直に言って、ここではプライベートメソッドを使用せず、合法なKey-Valueコーディングのみを使用します。
PS昨日、私の新しいアプリはこのアプローチで問題なくAppStoreに登場しました。そして、いくつかの読み取り専用プロパティ(navigatonBarなど)またはプライベートivarを変更するときにKVCを使用するのは、これが最初のケースではありません。
UITextField
fromの場合、UISearchBar
最初にtextField
from searchBar
を取得してからtintColor
プロパティを適用します。
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でこれを行う方法を含む、の詳細な回答