将填充/插入添加到 UIImage 作为 UITextField 的背景 [英] Add padding/insets to UIImage as background of UITextField

查看:22
本文介绍了将填充/插入添加到 UIImage 作为 UITextField 的背景的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I want to have the triangle on the right side of the textfield with a little padding, currently it is right at the border:

我的代码:

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
}
}

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

How can I add insets so the triangle is a little bit more left?

推荐答案

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

You can override the text fields methods. Like this

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, y: 0, width: 20 , height: bounds.height)
    }
}

这篇关于将填充/插入添加到 UIImage 作为 UITextField 的背景的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆