UITextField
のクリアボタンの画像をカスタマイズすることは可能ですか?テキストフィールドの背景が暗いため、「x」が十分に表示されません。
テキストフィールドのrightView
プロパティに独自のカスタムクリアボタンを設定できます。 rightViewMode
プロパティをUITextFieldViewModeWhileEditing
またはUITextFieldViewModeAlways
に設定してください。これはあなたのケースにとって意味があります。
ボタンの位置がニーズに合わない場合は、UITextField
をサブクラス化し、rightViewRectForBounds:
方法。
ドキュメントではclearButtonMode
プロパティのデフォルトはUITextFieldViewModeNever
ですが、Interface BuilderがUITextFieldViewModeWhileEditing
に設定するのではないかと疑っています-「never」値に設定してください表示されません。
これらのプロパティはすべて ITextField Class Reference に記載されています。
KVOを使用してそのプロパティにアクセスできます。
UIButton *clearButton = [myTextField valueForKey:@"_clearButton"];
[clearButton setImage:[UIImage new] forState:UIControlStateNormal];
テスト済みのiOS7.0-8.4
次のUIAppearanceメソッドを使用して、すべてのクリアボタンのbackgroundImageを更新できます。残念ながら、ボタンの画像を更新することはできません。
UIButton *defaultClearButton = [UIButton appearanceWhenContainedIn:[UITextField class], nil];
[defaultClearButton setBackgroundImage:[UIImage imageNamed:@"clearButtonBkg1.png"] forState:UIControlStateNormal];
次の画像を使用すると、次のクリアボタンが表示されます。
白い背景画像@ 3x:
注:これにより、テキストフィールドに含まれるすべてのボタンの背景画像が更新されます
@Brody Robertsonの回答のSwift 2.2+/iOS 9+バージョン:
let defaultClearButton = UIButton.appearanceWhenContainedInInstancesOfClasses([UITextField.self])
defaultClearButton.setBackgroundImage(UIImage(named: "ClearIcon"), forState: UIControlState.Normal)
Swift
let customClearButton = UIButton.appearance(whenContainedInInstancesOf: [UITextField.self])
customClearButton.setBackgroundImage(UIImage(named: "custom_cb"), for: .normal)
@TussLászlóの answer に依存
Swift 3.0
myTextField.clearButtonMode = .whileEditing
if let clearButton = myTextField.value(forKeyPath: "_clearButton") as? UIButton {
clearButton.setImage(UIImage(named:"myImage"), for: .normal)
clearButton.setImage(UIImage(named:"myImage"), for: .highlighted)
}
しかし、実際には慎重に使用してください。 Apple将来のiOSリリースで実装を変更する場合、動作しません
1つの方法は、目的の画像をサブビューとして使用し、タップすると親テキストフィールドをクリアするカスタムUITextField
を作成することです。デフォルトのボタンを無効にし、このカスタムテキストフィールドにカスタム動作を追加します。
これで開始できます。さらに具体的な質問がある場合は、軽微な問題であれば、ここで質問やコメントを自由に編集してください。