微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将填充/插入添加到 UIImage 作为 UITextField 的背景

如何解决将填充/插入添加到 UIImage 作为 UITextField 的背景

我想让文本框右侧的三角形有一点填充,目前它就在边界处:

enter image description here

我的代码

class Textfield: UITextField,UITextFieldDelegate {

func setup() {
    let background = UIImage(systemName: "arrowtriangle.down.fill")
    let imageView = UIImageView(image: background)

    imageView.tintColor = .label
    self.rightviewmode = .always
    imageView.contentMode = .scaleAspectFit
    self.rightView = imageView
}
}

如何添加插图使三角形更左一点?

解决方法

您可以覆盖文本字段方法。像这样

class Textfield: UITextField,UITextFieldDelegate {
    
    @IBInspectable var leftPadding : CGFloat = 0
    @IBInspectable var rightPadding : CGFloat = 10
    
    private var padding: UIEdgeInsets = UIEdgeInsets()
    
    override func awakeFromNib() {
        super.awakeFromNib()
        padding = UIEdgeInsets(top: 0,left: leftPadding,bottom: 0,right: rightPadding)
        
        setup()
    }
    
    func setup() {
        let background = UIImage(systemName: "arrowtriangle.down.fill")
        let imageView = UIImageView(image: background)
        
        imageView.tintColor = .label
        self.rightViewMode = .always
        imageView.contentMode = .scaleAspectFit
        self.rightView = imageView
    }
    
    override open func textRect(forBounds bounds: CGRect) -> CGRect {
        return bounds.inset(by: padding)
    }
    
    override open func placeholderRect(forBounds bounds: CGRect) -> CGRect {
        return bounds.inset(by: padding)
    }
    
    override open func editingRect(forBounds bounds: CGRect) -> CGRect {
        return bounds.inset(by: padding)
    }
    
    override func rightViewRect(forBounds bounds: CGRect) -> CGRect {
        return CGRect(x: bounds.width - 30,y: 0,width: 20,height: bounds.height)
    }
    
    override func leftViewRect(forBounds bounds: CGRect) -> CGRect {
        return CGRect(x: 10,height: bounds.height)
    }
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。