UITextField RightView 图像超出范围

Posted

技术标签:

【中文标题】UITextField RightView 图像超出范围【英文标题】:UITextField RightView image goes out of bounds 【发布时间】:2017-02-27 14:43:39 【问题描述】:

所以我有一个文本字段,基本上是 JVFloatLabeledTextField 用于浮动文本,并在检查用户名是否可用时工作。如果 web 服务返回一个用户名已经存在的响应对象,则 textfields rightview 设置一个红色警报图像,而如果它返回用户名可用,则 rightview imageview 设置为绿色.. 图像设置有点超出范围.什么都试过了。附上截图,代码如下:

    usernameTextField.rightViewMode = UITextFieldViewMode.always
    let imageView = UIImageView.init(frame: CGRect(x: 0, y: 0, width: 20, height: 20))

    var imageName:String = ""

    if jsonReturned["errorCode"] == "Success" 
        imageName = "isAcceptedIcon"
     else 
        imageName = "isRejectedIcon"
    

    let image = UIImage(named: imageName)
    imageView.image = image
    usernameTextField.rightView = imageView

非常感谢任何帮助。我想将图像向左移动一点。提前致谢。

【问题讨论】:

尝试将 imageView 模式设置为 scaleAspectFit @noob 一样.. 没有任何效果!! 【参考方案1】:

所以我自己解决了这个问题。这是一种非常简单的事实。而不是指定给rightView,imageView..我不得不设置rightView的框架,然后addSubview(imageView)给它。这是代码和新的附图:

    userEmailTextField.rightViewMode = UITextFieldViewMode.always
    let imageView = UIImageView.init(frame: CGRect(x: 0, y: 0, width: 20, height: 20))

    usernameTextField.rightView?.frame = AppManager.shared.CGRectMake(0, 0, 25, 20)

    var imageName:String = ""
    if jsonReturned["errorCode"] == "Success" 
        imageName = "isAcceptedIcon"
     else 
        imageName = "isRejectedIcon"
    

    let image = UIImage(named: imageName)
    imageView.image = image
    imageView.contentMode = .scaleAspectFit

    usernameTextField.rightView?.addSubview(imageView)

所以是的,这是一个巨大的修复!希望这对其他人也有帮助:)

【讨论】:

以上是关于UITextField RightView 图像超出范围的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Xamarin IOS 自定义渲染器中单击 UITextField Rightview 打开 UIPickerView

来自 rightView 的 UITextField 参考

将 rightview UIImageView 输入到 UITextField

iOS7 上的 UITextfield leftView/rightView 填充

IOS 13:UITextField rightView的间距问题

重新加载行包含带有 rightView 的 UITextField 会导致无限循环和内存溢出