uitextfield add image icon right code example

Example: uitextfield add image icon right

Swift 5

//MARK: - CustomTextView
class BaseTextField: UITextField {
    
    var setHPad: UIEdgeInsets = { return UIEdgeInsets(top: 0, left: 8, bottom: 0, right: 8 ) }()

    override open func textRect( forBounds bounds: CGRect ) -> CGRect {
        return bounds.inset( by: self.setHPad )
    }

    override open func placeholderRect(forBounds bounds: CGRect) -> CGRect {
        return bounds.inset(by: self.setHPad )
    }

    override open func editingRect(forBounds bounds: CGRect) -> CGRect {
        return bounds.inset(by: self.setHPad )
    }

    @IBInspectable open var leftImage:String? {
        didSet {
            if (leftImage != nil) {
                self.applyLeftImage(leftImage!)
                self.setHPad = { return UIEdgeInsets(top: 0, left: 8, bottom: 0, right: 30 ) }()
            }
        }
    }


    fileprivate func applyLeftImage(_ image: String) {

        
        // set image
        let imageView = UIImageView()
        imageView.image = UIImage( systemName: image )
        imageView.tintColor = UIColor(named: K.EpColors.black)
        imageView.clipsToBounds = true
        
        // set holder
        let viewHolder = UIView()
        viewHolder.clipsToBounds = true
        viewHolder.addSubview(imageView)

        // prepare for constraints
        imageView.translatesAutoresizingMaskIntoConstraints = false
        viewHolder.translatesAutoresizingMaskIntoConstraints = false
        
        // views param
        let viewsDictionary = [
            "imageHolder": viewHolder,
            "image":imageView
        ]
        
        let metrics = [
            "default": 8,
            "none": 0
        ]
        
        // set horisontal constraints
        viewHolder.addConstraints(
            NSLayoutConstraint.constraints(withVisualFormat: "H:|-(default)-[image]-(default)-|",
                                           options: [],
                                           metrics: metrics,
                                           views: viewsDictionary))
        
        // set vertical constraints
        viewHolder.addConstraints(
            NSLayoutConstraint.constraints(withVisualFormat: "V:|-(default)-[image]-(default)-|",
                                           options: [],
                                           metrics: metrics,
                                           views: viewsDictionary))

        // add image to textfield
        self.addSubview(viewHolder)
        
        // keep childView from overflowing
        self.clipsToBounds = true
        
        // set horizontal constraints
        self.addConstraints(
            NSLayoutConstraint.constraints(withVisualFormat: "H:|-(>=default)-[imageHolder]-(none)-|",
                                           options: [],
                                           metrics: metrics,
                                           views: viewsDictionary)
        )
        // set vertical constraints
        self.addConstraints(
            NSLayoutConstraint.constraints(withVisualFormat: "V:|-(none)-[imageHolder]-(none)-|",
                                           options: [],
                                           metrics: metrics,
                                           views: viewsDictionary)
        )
        
        self.rightView?.tintColor = UIColor( named: K.EpColors.black )
        
        
    }
}

Tags:

Misc Example