uitextfield right view image padding swift code example
Example: uitextfield add right image swift 5
Swift 5
let textView = BaseTextField()
textView.rightImage = "magnifyingglass"
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 rightImage:String? {
didSet {
if (rightImage != nil) {
self.applyRightImage(rightImage!)
self.setHPad = { return UIEdgeInsets(top: 0, left: 8, bottom: 0, right: 30 ) }()
}
}
}
fileprivate func applyRightImage(_ image: String) {
let imageView = UIImageView()
imageView.image = UIImage( systemName: image )
imageView.tintColor = UIColor(named: K.EpColors.black)
imageView.clipsToBounds = true
let viewHolder = UIView()
viewHolder.clipsToBounds = true
viewHolder.addSubview(imageView)
imageView.translatesAutoresizingMaskIntoConstraints = false
viewHolder.translatesAutoresizingMaskIntoConstraints = false
let viewsDictionary = [
"imageHolder": viewHolder,
"image":imageView
]
let metrics = [
"default": 8,
"none": 0
]
viewHolder.addConstraints(
NSLayoutConstraint.constraints(withVisualFormat: "H:|-(default)-[image]-(default)-|",
options: [],
metrics: metrics,
views: viewsDictionary))
viewHolder.addConstraints(
NSLayoutConstraint.constraints(withVisualFormat: "V:|-(default)-[image]-(default)-|",
options: [],
metrics: metrics,
views: viewsDictionary))
self.addSubview(viewHolder)
self.clipsToBounds = true
self.addConstraints(
NSLayoutConstraint.constraints(withVisualFormat: "H:|-(>=default)-[imageHolder]-(none)-|",
options: [],
metrics: metrics,
views: viewsDictionary))
self.addConstraints(
NSLayoutConstraint.constraints(withVisualFormat: "V:|-(none)-[imageHolder]-(none)-|",
options: [],
metrics: metrics,
views: viewsDictionary))
}
}