Guest User

Untitled

a guest
Aug 17th, 2018
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.68 KB | None | 0 0
  1. let imageView = UIImageView(image: UIImage(named: strImgname))
  2. imageView.frame = CGRect(x: 0, y: 0, width: imageView.image!.size.width , height: imageView.image!.size.height)
  3. let paddingView: UIView = UIView.init(frame: CGRect(x: 0, y: 0, width: 50, height: 30))
  4. paddingView.addSubview(imageView)
  5. txtField.leftViewMode = .always
  6. txtField.leftView = paddingView
  7.  
  8. import Foundation
  9. import UIKit
  10.  
  11. protocol DesignableTextFieldDelegate: UITextFieldDelegate {
  12. func textFieldIconClicked(btn:UIButton)
  13. }
  14.  
  15. @IBDesignable
  16. class DesignableTextField: UITextField {
  17.  
  18. //Delegate when image/icon is tapped.
  19. private var myDelegate: DesignableTextFieldDelegate? {
  20. get { return delegate as? DesignableTextFieldDelegate }
  21. }
  22.  
  23. @objc func buttonClicked(btn: UIButton){
  24. self.myDelegate?.textFieldIconClicked(btn: btn)
  25. }
  26.  
  27. //Padding images on left
  28. override func leftViewRect(forBounds bounds: CGRect) -> CGRect {
  29. var textRect = super.leftViewRect(forBounds: bounds)
  30. textRect.origin.x += padding
  31. return textRect
  32. }
  33.  
  34. //Padding images on Right
  35. override func rightViewRect(forBounds bounds: CGRect) -> CGRect {
  36. var textRect = super.rightViewRect(forBounds: bounds)
  37. textRect.origin.x -= padding
  38. return textRect
  39. }
  40.  
  41. @IBInspectable var padding: CGFloat = 0
  42. @IBInspectable var leadingImage: UIImage? { didSet { updateView() }}
  43. @IBInspectable var color: UIColor = UIColor.lightGray { didSet { updateView() }}
  44. @IBInspectable var imageColor: UIColor = UIColor.init(hex: "3EB2FF") { didSet { updateView() }}
  45. @IBInspectable var rtl: Bool = false { didSet { updateView() }}
  46.  
  47. func updateView() {
  48. rightViewMode = UITextFieldViewMode.never
  49. rightView = nil
  50. leftViewMode = UITextFieldViewMode.never
  51. leftView = nil
  52.  
  53. if let image = leadingImage {
  54. let button = UIButton(type: .custom)
  55. button.frame = CGRect(x: 0, y: 0, width: 20, height: 20)
  56.  
  57. let tintedImage = image.withRenderingMode(.alwaysTemplate)
  58. button.setImage(tintedImage, for: .normal)
  59. button.tintColor = imageColor
  60.  
  61. button.setTitleColor(UIColor.clear, for: .normal)
  62. button.addTarget(self, action: #selector(buttonClicked(btn:)), for: UIControlEvents.touchDown)
  63. button.isUserInteractionEnabled = true
  64.  
  65. if rtl {
  66. rightViewMode = UITextFieldViewMode.always
  67. rightView = button
  68. } else {
  69. leftViewMode = UITextFieldViewMode.always
  70. leftView = button
  71. }
  72. }
  73.  
  74. // Placeholder text color
  75. attributedPlaceholder = NSAttributedString(string: placeholder != nil ? placeholder! : "", attributes:[NSAttributedStringKey.foregroundColor: color])
  76. }
  77. }
  78.  
  79. class MyViewController: UIViewController, DesignableTextFieldDelegate {
  80. @IBOutlet weak var txtFieldSomeSearch: DesignableTextField!
  81. txtFieldSomeSearch.delegate = self // can be done in storyboard as well
  82. ... // other codes
  83. func textFieldIconClicked(btn: UIButton) {
  84. print("MyViewController : textFieldIconClicked")
  85. }
  86. ... // other codes
  87. }
  88.  
  89. please use below code
  90.  
  91. // image on left side
  92. textField.leftViewMode = UITextFieldViewMode.Always
  93. let imageView = UIImageView(frame: CGRect(x: 0, y: 0, width: 20, height: 20))
  94. let image = UIImage(named: imageName)
  95. imageView.image = image
  96. textField.leftView = imageView
  97.  
  98.  
  99. // image on left side
  100. textField.rightViewMode = UITextFieldViewMode.Always
  101. let imageView = UIImageView(frame: CGRect(x: 0, y: 0, width: 20, height: 20))
  102. let image = UIImage(named: imageName)
  103. imageView.image = image
  104. textField.rightView = imageView
Add Comment
Please, Sign In to add comment