Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- let imageView = UIImageView(image: UIImage(named: strImgname))
- imageView.frame = CGRect(x: 0, y: 0, width: imageView.image!.size.width , height: imageView.image!.size.height)
- let paddingView: UIView = UIView.init(frame: CGRect(x: 0, y: 0, width: 50, height: 30))
- paddingView.addSubview(imageView)
- txtField.leftViewMode = .always
- txtField.leftView = paddingView
- import Foundation
- import UIKit
- protocol DesignableTextFieldDelegate: UITextFieldDelegate {
- func textFieldIconClicked(btn:UIButton)
- }
- @IBDesignable
- class DesignableTextField: UITextField {
- //Delegate when image/icon is tapped.
- private var myDelegate: DesignableTextFieldDelegate? {
- get { return delegate as? DesignableTextFieldDelegate }
- }
- @objc func buttonClicked(btn: UIButton){
- self.myDelegate?.textFieldIconClicked(btn: btn)
- }
- //Padding images on left
- override func leftViewRect(forBounds bounds: CGRect) -> CGRect {
- var textRect = super.leftViewRect(forBounds: bounds)
- textRect.origin.x += padding
- return textRect
- }
- //Padding images on Right
- override func rightViewRect(forBounds bounds: CGRect) -> CGRect {
- var textRect = super.rightViewRect(forBounds: bounds)
- textRect.origin.x -= padding
- return textRect
- }
- @IBInspectable var padding: CGFloat = 0
- @IBInspectable var leadingImage: UIImage? { didSet { updateView() }}
- @IBInspectable var color: UIColor = UIColor.lightGray { didSet { updateView() }}
- @IBInspectable var imageColor: UIColor = UIColor.init(hex: "3EB2FF") { didSet { updateView() }}
- @IBInspectable var rtl: Bool = false { didSet { updateView() }}
- func updateView() {
- rightViewMode = UITextFieldViewMode.never
- rightView = nil
- leftViewMode = UITextFieldViewMode.never
- leftView = nil
- if let image = leadingImage {
- let button = UIButton(type: .custom)
- button.frame = CGRect(x: 0, y: 0, width: 20, height: 20)
- let tintedImage = image.withRenderingMode(.alwaysTemplate)
- button.setImage(tintedImage, for: .normal)
- button.tintColor = imageColor
- button.setTitleColor(UIColor.clear, for: .normal)
- button.addTarget(self, action: #selector(buttonClicked(btn:)), for: UIControlEvents.touchDown)
- button.isUserInteractionEnabled = true
- if rtl {
- rightViewMode = UITextFieldViewMode.always
- rightView = button
- } else {
- leftViewMode = UITextFieldViewMode.always
- leftView = button
- }
- }
- // Placeholder text color
- attributedPlaceholder = NSAttributedString(string: placeholder != nil ? placeholder! : "", attributes:[NSAttributedStringKey.foregroundColor: color])
- }
- }
- class MyViewController: UIViewController, DesignableTextFieldDelegate {
- @IBOutlet weak var txtFieldSomeSearch: DesignableTextField!
- txtFieldSomeSearch.delegate = self // can be done in storyboard as well
- ... // other codes
- func textFieldIconClicked(btn: UIButton) {
- print("MyViewController : textFieldIconClicked")
- }
- ... // other codes
- }
- please use below code
- // image on left side
- textField.leftViewMode = UITextFieldViewMode.Always
- let imageView = UIImageView(frame: CGRect(x: 0, y: 0, width: 20, height: 20))
- let image = UIImage(named: imageName)
- imageView.image = image
- textField.leftView = imageView
- // image on left side
- textField.rightViewMode = UITextFieldViewMode.Always
- let imageView = UIImageView(frame: CGRect(x: 0, y: 0, width: 20, height: 20))
- let image = UIImage(named: imageName)
- imageView.image = image
- textField.rightView = imageView
Add Comment
Please, Sign In to add comment