Cepat tambahkan ikon / gambar di UITextField

101

Saya ingin menambahkan ikon / gambar di UITextField. Ikon / gambar harus diserahkan ke placeholder.

masukkan deskripsi gambar di sini

Saya mencoba ini:

var imageView = UIImageView();
var image = UIImage(named: "email.png");
imageView.image = image;
emailField.leftView = imageView;

Terima kasih.

informatiker
sumber
74
Anda secara tidak sengaja menambahkan titik koma: D
Gerald
10
emailField.leftView = UIImageView(image: UIImage(named: "search")):)
tspentzas
Menggunakan @IBDesignablekita dapat melakukan ini dengan cara yang elegan seperti dalam contoh ini: stackoverflow.com/a/51841433/8238512
Rizwan

Jawaban:

121

Coba tambahkan emailField.leftViewMode = UITextFieldViewMode.Always

(Default leftViewModeadalah Never)

Jawaban yang Diperbarui untuk Swift 4

emailField.leftViewMode = UITextFieldViewMode.always

emailField.leftViewMode = .always
Markus
sumber
Hmm berhasil untuk saya, apakah Anda mencobanya dengan nilai yang diperbarui ( UITextFieldViewMode.Always)? Apakah Anda tahu apa yang tidak berhasil? (misalnya apakah itu dikompilasi?)
Markus
Ini adalah seluruh kode saya di bagian 'ViewWillAppear': 'var imageView = UIImageView (); var image = UIImage (bernama: "email.png"); imageView.image = gambar; emailTextField.leftView = imageView; emailTextField.leftViewMode = UITextFieldViewMode. Selalu
informatiker
@informatiker Ok, Jadi apakah Anda yakin bahwa Anda memiliki koneksi yang benar, jika Anda misalnya mengatur warna latar belakang emailTextFieldapakah itu benar-benar berubah? Dan apakah Anda yakin gambar itu ada? Misalnya, buat UIImageView lain dan muat UIImageView imageitu untuk memverifikasi bahwa itu berfungsi.
Markus
4
ya terima kasih. Masalahnya adalah ikon itu berwarna putih dan tidak terlihat pada latar belakang putih.
informatiker
5
Saya melanjutkan pencarian saya dan akhirnya berhasil, saya melewatkan menyiapkan bingkai untuk tampilan gambar. Sepertinya kita perlu mengatur bingkai pada gambar sebelum menambahkannya ke bidang uitext. Sesuatu seperti iniimageView1.frame = CGRect(x: 5, y: 0, width: userName.frame.height, height: userName.frame.height) view.addSubview(imageView1)
Sashi
123

Sahil memiliki jawaban yang bagus dan saya ingin mengambilnya dan mengembangkannya menjadi @IBDesignable sehingga pengembang dapat menambahkan gambar ke UITextFields mereka di Storyboard.

Swift 4.2.0

import UIKit

@IBDesignable
class DesignableUITextField: UITextField {
    
    // Provides left padding for images
    override func leftViewRect(forBounds bounds: CGRect) -> CGRect {
        var textRect = super.leftViewRect(forBounds: bounds)
        textRect.origin.x += leftPadding
        return textRect
    }
    
    @IBInspectable var leftImage: UIImage? {
        didSet {
            updateView()
        }
    }
    
    @IBInspectable var leftPadding: CGFloat = 0
    
    @IBInspectable var color: UIColor = UIColor.lightGray {
        didSet {
            updateView()
        }
    }
    
    func updateView() {
        if let image = leftImage {
            leftViewMode = UITextField.ViewMode.always
            let imageView = UIImageView(frame: CGRect(x: 0, y: 0, width: 20, height: 20))
            imageView.contentMode = .scaleAspectFit
            imageView.image = image
            // Note: In order for your image to use the tint color, you have to select the image in the Assets.xcassets and change the "Render As" property to "Template Image".
            imageView.tintColor = color
            leftView = imageView
        } else {
            leftViewMode = UITextField.ViewMode.never
            leftView = nil
        }
        
        // Placeholder text color
        attributedPlaceholder = NSAttributedString(string: placeholder != nil ?  placeholder! : "", attributes:[NSAttributedString.Key.foregroundColor: color])
    }
}

Apa yang terjadi disini?

Dapat dirancang ini memungkinkan Anda untuk:

  • Atur gambar di sebelah kiri
  • Tambahkan bantalan di antara tepi kiri UITextField dan gambar
  • Atur warna sehingga gambar dan teks Placeholder cocok

Catatan

  • Agar warna gambar berubah, Anda harus mengikuti catatan itu di komentar di kode
  • Warna gambar tidak akan berubah di Storyboard. Anda harus menjalankan proyek untuk melihat warna di Simulator / perangkat.

Dapat didesain di Papan Cerita Papan cerita

Saat Runtime Runtime

Mark Moeykens
sumber
5
Ditambahkan dalam imageView.contentMode = .AspectFit, untuk menghindari pengubahan ukuran gambar.
Jerland2
3
Terima kasih banyak untuk postingan yang bagus! Saya telah memodifikasinya agar juga memiliki opsi RTL. Kode tersedia di sini: pastebin.com/7CCm6NEB
Ali Almohsen
Kerja bagus, teman-teman! Saya akhirnya melakukan hal yang sama di kemudian hari juga. Ha ha
Mark Moeyk
14
bagaimana dengan padding antara gambar dan teks?
Zaporozhchenko Oleksandr
1
Jawaban yang bagus.
Ripa Saha
51

Saya hanya ingin menambahkan beberapa hal lagi di sini:

Jika Anda ingin menambahkan gambar di UITextFieldsisi kiri gunakan leftViewpropertiUITextField

CATATAN: Jangan lupa untuk mengatur leftViewModeke UITextFieldViewMode.Alwaysdan untuk hak rightViewModeke UITextFieldViewMode.Always anddefault adalahUITextFieldViewModeNever

untuk mis

Untuk menambahkan gambar di sisi kiri

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

Untuk menambahkan gambar di sisi kanan

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

CATATAN: beberapa hal yang perlu Anda perhatikan saat menambahkan gambar di UITextFieldsisi kiri atau kanan.

  • Jangan lupa berikan bingkai ImageViewyang akan Anda tambahkanUITextField

    biarkan imageView = UIImageView (bingkai: CGRect (x: 0, y: 0, lebar: 20, tinggi: 20))

  • jika background gambar Anda putih maka gambar tidak akan terlihat UITextField

  • jika Anda ingin menambahkan gambar ke posisi tertentu yang perlu Anda tambahkan ImageViewsebagai subview UITextField.

Perbarui Untuk Swift 3.0

@Mark Moeykens dengan indah mengeluarkannya dan menjadikannya @IBDesignable .

Saya memodifikasi dan menambahkan beberapa fitur lagi (tambahkan Garis Bawah dan padding untuk gambar kanan) di sini.

CATATAN jika Anda ingin menambahkan gambar di sisi kanan, Anda dapat memilih Force Right-to-Leftopsi di semanticdalam pembuat antarmuka (Tapi untuk pengisi gambar kanan tidak akan berfungsi sampai Anda mengganti metode rightViewRect).

masukkan deskripsi gambar di sini

Saya telah memodifikasi ini dan dapat mengunduh sumber dari sini ImageTextField

masukkan deskripsi gambar di sini

Sahil
sumber
bagaimana cara menambahkan ini di ekstensi dan memanggil di viewcontroller saya? dapatkah Anda menyarankan saya
narahari_arjun
Sangat sederhana! cukup buat fungsi dalam ekstensi UIViewController dan teruskan imagename dan textfield ref saat memanggil fungsi itu.
Sahil
ekstensi UIViewController {func addLeftImage (imageName: String, textField: UITextField) {textField.leftViewMode = UITextFieldViewMode. Selalu biarkan imageView = UIImageView (bingkai: CGRect (x: 0, y: 0, lebar: 20, tinggi: 20)) biarkan gambar = UIImage (bernama: imageName) imageView.image = image textField.leftView = imageView}} dan sebut seperti self.addLeftImage ("imganame", textField: yourtextfield)
Sahil
saya mencoba mengubah posisi ikon. tetapi tidak diubah menggunakan kode ini
Rahul Phate
22

UITextField dengan gambar (kiri atau kanan)

Cara lain, terinspirasi dari postingan sebelumnya membuat extension.

Kita bisa meletakkan gambar di kanan atau di kiri

extension UITextField {

enum Direction {
    case Left
    case Right
}

// add image to textfield
func withImage(direction: Direction, image: UIImage, colorSeparator: UIColor, colorBorder: UIColor){
    let mainView = UIView(frame: CGRect(x: 0, y: 0, width: 50, height: 45))
    mainView.layer.cornerRadius = 5

    let view = UIView(frame: CGRect(x: 0, y: 0, width: 50, height: 45))
    view.backgroundColor = .white
    view.clipsToBounds = true
    view.layer.cornerRadius = 5
    view.layer.borderWidth = CGFloat(0.5)
    view.layer.borderColor = colorBorder.cgColor
    mainView.addSubview(view)

    let imageView = UIImageView(image: image)
    imageView.contentMode = .scaleAspectFit
    imageView.frame = CGRect(x: 12.0, y: 10.0, width: 24.0, height: 24.0)
    view.addSubview(imageView)

    let seperatorView = UIView()
    seperatorView.backgroundColor = colorSeparator
    mainView.addSubview(seperatorView)

    if(Direction.Left == direction){ // image left
        seperatorView.frame = CGRect(x: 45, y: 0, width: 5, height: 45)
        self.leftViewMode = .always
        self.leftView = mainView
    } else { // image right
        seperatorView.frame = CGRect(x: 0, y: 0, width: 5, height: 45)
        self.rightViewMode = .always
        self.rightView = mainView
    }

    self.layer.borderColor = colorBorder.cgColor
    self.layer.borderWidth = CGFloat(0.5)
    self.layer.cornerRadius = 5
}

}

Penggunaan:

if let myImage = UIImage(named: "my_image"){
    textfield.withImage(direction: .Left, image: myImage, colorSeparator: UIColor.orange, colorBorder: UIColor.black)
}

Nikmati :)

Insou
sumber
1
Anda membuat hari saya menyenangkan, saya menyesuaikan "view.backgroundColor" dan "imageView.tintColor" untuk membuatnya dapat disesuaikan sepenuhnya. Terima kasih banyak atas jawaban Anda xD
Andres Paladines
1
Ini luar biasa
Mohamed Haseel
1
Ini adalah jawaban terbaik dan sederhana
Gerardo Salazar Sánchez
14

Untuk membuat padding, saya suka menempatkan gambar di dalam tampilan kontainer. Anda dapat menghapus warna latar belakang setelah Anda puas dengan penempatan ikon tersebut.

masukkan deskripsi gambar di sini

let imageView = UIImageView(frame: CGRect(x: 8.0, y: 8.0, width: 24.0, height: 24.0))
let image = UIImage(named: "my_icon")
imageView.image = image
imageView.contentMode = .scaleAspectFit
imageView.backgroundColor = UIColor.red

let view = UIView(frame: CGRect(x: 0, y: 0, width: 32, height: 40))
view.addSubview(imageView)
view.backgroundColor = .green
textField.leftViewMode = UITextFieldViewMode.always
textField.leftView = view
S Yoshida
sumber
Terima kasih. Penjelasan bagus dengan warna.
Hamid Reza Ansari
13

untuk Swift 3.0 tambahkan gambar di sisi kiri textField

textField.leftView = UIImageView(image: "small-calendar")
textField.leftView?.frame = CGRect(x: 0, y: 5, width: 20 , height:20)
textField.leftViewMode = .always
Maulik Patel
sumber
6

Cepat 5

@IBOutlet weak var paswd: UITextField! {
    didSet{
      paswd.setLeftView(image: UIImage.init(named: "password")!)
      paswd.tintColor = .darkGray
      paswd.isSecureTextEntry = true
    }   
 }

Saya telah membuat ekstensi

extension UITextField {
  func setLeftView(image: UIImage) {
    let iconView = UIImageView(frame: CGRect(x: 10, y: 10, width: 25, height: 25)) // set your Own size
    iconView.image = image
    let iconContainerView: UIView = UIView(frame: CGRect(x: 0, y: 0, width: 35, height: 45))
    iconContainerView.addSubview(iconView)
    leftView = iconContainerView
    leftViewMode = .always
    self.tintColor = .lightGray
  }
}

Hasil

masukkan deskripsi gambar di sini

Gurjinder Singh
sumber
4

2020 - solusi yang masuk akal

Mengenai kegilaan dari Apple ini.

Ini mungkin cara yang "paling jelas", paling sederhana, untuk melakukannya:

masukkan deskripsi gambar di sini

Pertama, Anda harus memindahkan teks dengan benar.

Catat QA penting ini: https://stackoverflow.com/a/27066764/294884

class TidyTextField: UITextField {
    
    @IBInspectable var leftImage: UIImage? = nil
    @IBInspectable var leftPadding: CGFloat = 0
    @IBInspectable var gapPadding: CGFloat = 0
    
    private var textPadding: UIEdgeInsets {
        let p: CGFloat = leftPadding + gapPadding + (leftView?.frame.width ?? 0)
        return UIEdgeInsets(top: 0, left: p, bottom: 0, right: 5)
    }
    
    override open func textRect(forBounds bounds: CGRect) -> CGRect {
        return bounds.inset(by: textPadding)
    }
    
    override open func placeholderRect(forBounds bounds: CGRect) -> CGRect {
        return bounds.inset(by: textPadding)
    }
    
    override open func editingRect(forBounds bounds: CGRect) -> CGRect {
        return bounds.inset(by: textPadding)
    }
    

melanjutkan, sekarang kita harus membuat dan memindahkan gambar kiri:

    override func leftViewRect(forBounds bounds: CGRect) -> CGRect {
        var r = super.leftViewRect(forBounds: bounds)
        r.origin.x += leftPadding
        return r
    }
    
    override func layoutSubviews() {
        super.layoutSubviews()
        setup()
    }
    
    private func setup() {
        if let image = leftImage {
            if leftView != nil { return } // critical!
            
            let im = UIImageView()
            im.contentMode = .scaleAspectFit
            im.image = image
            
            leftViewMode = UITextField.ViewMode.always
            leftView = im
            
        } else {
            leftViewMode = UITextField.ViewMode.never
            leftView = nil
        }
    }
}

Ini sepertinya tentang cara yang paling jelas dan paling dapat diandalkan untuk melakukannya.

Gendut
sumber
3

Saya membuat IBDdesainable sederhana. Gunakan sesuka Anda. Cukup buat UITextField Anda mengonfirmasi ke kelas ini.

import UIKit

@IBDesignable
class RoundTextField : UITextField {
    @IBInspectable var cornerRadius : CGFloat = 0{
        didSet{
            layer.cornerRadius = cornerRadius
            layer.masksToBounds = cornerRadius > 0
        }
    }

    @IBInspectable var borderWidth : CGFloat = 0 {
        didSet{
            layer.borderWidth = borderWidth
        }
    }

    @IBInspectable var borderColor : UIColor? {
        didSet {
            layer.borderColor = borderColor?.cgColor
        }
    }

    @IBInspectable var bgColor : UIColor? {
        didSet {
            backgroundColor = bgColor
        }
    }

    @IBInspectable var leftImage : UIImage? {
        didSet {
            if let image = leftImage{
                leftViewMode = .always
                let imageView = UIImageView(frame: CGRect(x: 20, y: 0, width: 20, height: 20))
                imageView.image = image
                imageView.tintColor = tintColor
                let view = UIView(frame : CGRect(x: 0, y: 0, width: 25, height: 20))
                view.addSubview(imageView)
                leftView = view
            }else {
                leftViewMode = .never
            }

        }
    }

    @IBInspectable var placeholderColor : UIColor? {
        didSet {
            let rawString = attributedPlaceholder?.string != nil ? attributedPlaceholder!.string : ""
            let str = NSAttributedString(string: rawString, attributes: [NSForegroundColorAttributeName : placeholderColor!])
            attributedPlaceholder = str
        }
    }

    override func textRect(forBounds bounds: CGRect) -> CGRect {
        return bounds.insetBy(dx: 50, dy: 5)
    }

    override func editingRect(forBounds bounds: CGRect) -> CGRect {
        return bounds.insetBy(dx: 50, dy: 5)
    }

}
Abhishek Biswas
sumber
3

masukkan deskripsi gambar di sini
Cara lain untuk mengatur ikon placeholder & mengatur padding ke TextField.

let userIcon = UIImage(named: "ImageName") 
setPaddingWithImage(image: userIcon, textField: txtUsername)

func setPaddingWithImage(image: UIImage, textField: UITextField){
    let imageView = UIImageView(image: image)
    imageView.contentMode = .scaleAspectFit
    let view = UIView(frame: CGRect(x: 0, y: 0, width: 60, height: 50))
    imageView.frame = CGRect(x: 13.0, y: 13.0, width: 24.0, height: 24.0)
    //For Setting extra padding other than Icon.
    let seperatorView = UIView(frame: CGRect(x: 50, y: 0, width: 10, height: 50))
    seperatorview.backgroundColor = UIColor(red: 80/255, green: 89/255, blue: 94/255, alpha: 1)
    view.addSubview(seperatorView)
    textField.leftViewMode = .always
    view.addSubview(imageView)
    view.backgroundColor = .darkGray
    textField.leftViewMode = UITextFieldViewMode.always
    textField.leftView = view
}
Sudhi 9135
sumber
2

Swift 3.1.0

extension UITextField
{
    enum Direction
    {
        case Left
        case Right
    }

    func AddImage(direction:Direction,imageName:String,Frame:CGRect,backgroundColor:UIColor)
    {
        let View = UIView(frame: Frame)
        View.backgroundColor = backgroundColor

        let imageView = UIImageView(frame: Frame)
        imageView.image = UIImage(named: imageName)

        View.addSubview(imageView)

        if Direction.Left == direction
        {
            self.leftViewMode = .always
            self.leftView = View
        }
        else
        {
            self.rightViewMode = .always
            self.rightView = View
        }
    }

}
yogesh jethava
sumber
tolong tambahkan penggunaan dan apa yang saya butuhkan untuk melewati parameter bingkai?
Surya Reddy
dalam Fungsi ini Parameter "Bingkai" Digunakan untuk Tampilan kiri atau kanan
jethava yogesh
1

Anda dapat meletakkan fungsi ini di file global Anda atau di atas kelas Anda sehingga Anda dapat mengaksesnya di seluruh aplikasi. Setelah prosedur ini, Anda dapat memanggil fungsi ini sesuai kebutuhan Anda dalam aplikasi.

        func SetLeftSIDEImage(TextField: UITextField, ImageName: String){

                let leftImageView = UIImageView()
                leftImageView.contentMode = .scaleAspectFit

                let leftView = UIView()

                leftView.frame = CGRect(x: 20, y: 0, width: 30, height: 20)
                leftImageView.frame = CGRect(x: 13, y: 0, width: 15, height: 20)
                TextField.leftViewMode = .always
                TextField.leftView = leftView

                let image = UIImage(named: ImageName)?.withRenderingMode(.alwaysTemplate)
                leftImageView.image = image
                leftImageView.tintColor = UIColor(red: 106/255, green: 79/255, blue: 131/255, alpha: 1.0)
                leftImageView.tintColorDidChange()

                leftView.addSubview(leftImageView)
            }

            SetLeftSIDEImage(TextField: Your_textField, ImageName:YourImageName) // call function
Dhaval Solanki
sumber
2
Selamat datang di StackOverflow, adakah cara untuk memberikan penjelasan bersama dengan kode ini? Jawaban yang hanya memiliki kode di dalamnya cenderung dihapus karena kualitasnya rendah. Silakan lihat juga panduan ini untuk menjawab di bagian bantuan: stackoverflow.com/help/how-to-answer
Graham
0

Mengapa Anda tidak menggunakan pendekatan termudah. Untuk kebanyakan kasus, Anda ingin menambahkan ikon seperti font mengagumkan ... Cukup gunakan library font awesome dan akan semudah ini menambahkan ikon ke bidang teks seperti ini:

myTextField.setLeftViewFAIcon(icon: .FAPlus, leftViewMode: .always, textColor: .red, backgroundColor: .clear, size: nil)

Anda harus menginstal dulu pustaka cepat ini: https://github.com/Vaberer/Font-Awesome-Swift

Alex Zanfir
sumber
5
Mengapa seseorang harus menambahkan seluruh perpustakaan hanya untuk mendapatkan satu mesin terbang?
0

Ini adalah versi modifikasi dari jawaban Mark Moeykens dengan tambahan padding antara gambar dan teks dan ukuran gambar yang dapat disesuaikan jika seseorang membutuhkannya.

Cepat 4

    import UIKit

    @IBDesignable
    class TextFieldWithImage: UITextField {

        override func leftViewRect(forBounds bounds: CGRect) -> CGRect {
            return super.leftViewRect(forBounds: bounds)
        }

        @IBInspectable var leftImage: UIImage? {
            didSet {
                updateView()
            }
        }
        @IBInspectable var leftPadding: CGFloat = 0 {
            didSet {
                updateView()
            }
        }
        @IBInspectable var rightPadding: CGFloat = 0 {
            didSet {
                updateView()
            }
        }
        @IBInspectable var imageMaxHeight: CGFloat = 0 {
            didSet {
                updateView()
            }
        }

        @IBInspectable var color: UIColor = UIColor.lightGray {
            didSet {
                updateView()
            }
        }

        func updateView() {
            if let image = leftImage {
                leftViewMode = UITextField.ViewMode.always

                let containerSize = calculateContainerViewSize(for: image)
                let containerView = UIView(frame: CGRect(x: 0, y: 0, width: containerSize.width, height: containerSize.height))

                let imageView = UIImageView(frame: .zero)
                containerView.addSubview(imageView)
                setImageViewConstraints(imageView, in: containerView)

                setImageViewProperties(imageView, image: image)

                leftView = containerView
            } else {
                leftViewMode = UITextField.ViewMode.never
                leftView = nil
            }

            attributedPlaceholder = NSAttributedString(string: placeholder != nil ? placeholder! : "",
                    attributes: [NSAttributedString.Key.foregroundColor: color])
        }

        private func calculateContainerViewSize(for image: UIImage) -> CGSize {
            let imageRatio = image.size.height / image.size.width
            let adjustedImageMaxHeight = imageMaxHeight > self.frame.height ? self.frame.height : imageMaxHeight

            var imageSize = CGSize()
            if image.size.height > adjustedImageMaxHeight {
                imageSize.height = adjustedImageMaxHeight
                imageSize.width = imageSize.height / imageRatio
            }

            let paddingWidth = leftPadding + rightPadding

            let containerSize = CGSize(width: imageSize.width + paddingWidth, height: imageSize.height)
            return containerSize
        }

        private func setImageViewConstraints(_ imageView: UIImageView, in containerView: UIView) {
            imageView.translatesAutoresizingMaskIntoConstraints = false
            imageView.topAnchor.constraint(equalTo: containerView.topAnchor).isActive = true
            imageView.bottomAnchor.constraint(equalTo: containerView.bottomAnchor).isActive = true
            imageView.trailingAnchor.constraint(equalTo: containerView.trailingAnchor, constant: -rightPadding).isActive = true
            imageView.leadingAnchor.constraint(equalTo: containerView.leadingAnchor, constant: leftPadding).isActive = true
        }

        private func setImageViewProperties(_ imageView: UIImageView, image: UIImage) {
            imageView.contentMode = .scaleAspectFit
            imageView.image = image
            imageView.tintColor = color
        }
    }
l.sypniewski
sumber
0

Cepat 5

Mirip dengan @Markus, tetapi di Swift 5 :

emailTextField.leftViewMode = UITextField.ViewMode.always
emailTextField.leftViewMode = .always
Jerry Chong
sumber
0

SwiftUI

RoundedRectangle(cornerRadius: 50)
                .frame(height: 40)
                .colorInvert() // sets the background white
            .padding()
            .shadow(radius: 12) // adds shadow to the rectangle
                .overlay(
                    HStack(spacing: 20){

                        Image(systemName: "person")
                            .resizable()
                            .aspectRatio(contentMode: .fit)

                        TextField("Username ", text: $username)
                            .font(Font.custom("Arial", size: 25))


                            .font(.title)
                    }
                    .padding()
                    .padding()
                )

Hasil

Roberto Font
sumber
0

Menggunakan ekstensi di Swift4, Kita dapat dengan mudah meletakkan gambar di kanan atau di kiri dengan padding ke TextField.

extension UITextField {

    //MARK:- Set Image on the right of text fields

  func setupRightImage(imageName:String){
    let imageView = UIImageView(frame: CGRect(x: 10, y: 10, width: 20, height: 20))
    imageView.image = UIImage(named: imageName)
    let imageContainerView: UIView = UIView(frame: CGRect(x: 0, y: 0, width: 55, height: 40))
    imageContainerView.addSubview(imageView)
    rightView = imageContainerView
    rightViewMode = .always
    self.tintColor = .lightGray
}

 //MARK:- Set Image on left of text fields

    func setupLeftImage(imageName:String){
       let imageView = UIImageView(frame: CGRect(x: 10, y: 10, width: 20, height: 20))
       imageView.image = UIImage(named: imageName)
       let imageContainerView: UIView = UIView(frame: CGRect(x: 0, y: 0, width: 55, height: 40))
       imageContainerView.addSubview(imageView)
       leftView = imageContainerView
       leftViewMode = .always
       self.tintColor = .lightGray
     }

  }

Gunakan kode untuk pengaturan gambar kiri: -

   self.password_text_field.setupLeftImage(imageName: "unlock")

Keluaran :)

masukkan deskripsi gambar di sini

Ashutosh kumar Mishra
sumber