UITextField clearButtonMode颜色

我可以更改textField上clearButtonMode的颜色吗?

theTextField.clearButtonMode = UITextFieldViewModeWhileEditing 

显示一个x是灰暗的颜色来删除textField,

但我可以用白色显示这个button吗?

谢谢

在这种情况下,您需要创build自己的清除button图像。 我会build议采取一个明确的button和在Photoshop中编辑的屏幕截图。

您可以拍摄该图像并创build一个具有图像尺寸的UIButton。 从那里你可以把它设置为UITextField的rightView。 像这样:

 UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]; [button setImage:[UIImage imageNamed:@"clear_button.png"] forState:UIControlStateNormal]; [button setFrame:CGRectMake(0.0f, 0.0f, 15.0f, 15.0f)]; // Required for iOS7 theTextField.rightView = button; theTextField.rightViewMode = UITextFieldViewModeWhileEditing; 

我input了那个没有语法检查的东西,那么在运行它之前你不想检查它。 你也想用你的图片名称来代替clear_button.png。

您还需要编写自己的方法来清除文本字段。

一个更简洁的方法是用这个方法在UITextField上实现一个类别:

 - (void)modifyClearButtonWithImage:(UIImage *)image { UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]; [button setImage:image forState:UIControlStateNormal]; [button setFrame:CGRectMake(0.0f, 0.0f, 15.0f, 15.0f)]; [button addTarget:self action:@selector(clear:) forControlEvents:UIControlEventTouchUpInside]; self.rightView = button; self.rightViewMode = UITextFieldViewModeWhileEditing; } -(IBAction)clear:(id)sender{ self.text = @""; } 

Swift版本:

 extension UITextField { func modifyClearButtonWithImage(image : UIImage) { let clearButton = UIButton(type: .Custom) clearButton.setImage(image, forState: .Normal) clearButton.frame = CGRectMake(0, 0, 40, 40) clearButton.contentMode = .ScaleAspectFit clearButton.addTarget(self, action: #selector(UITextField.clear(_:)), forControlEvents: .TouchUpInside) self.rightView = clearButton self.rightViewMode = .WhileEditing } func clear(sender : AnyObject) { self.text = "" } } 

在configurationtextField的时候,使用:

 let clearButton : UIButton = textField.value(forKey: "_clearButton") as! UIButton let image = UIImage(named: "ClearWhite") clearButton.setImage(image, for: .normal) clearButton.backgroundColor = UIColor.clear