Bagaimana Anda membuat Tampilan UIImage Secara Terprogram - Swift

107

Saya mencoba membuat Tampilan UIImage secara terprogram, saya memiliki tampilan baru dan saya mencoba melakukan ini

let imageName = "yourImage.png"
yourview.backgroundColor = UIColor.colorWithPatternImage(UIImage(named:imageName))

ini tidak berhasil karena saya tidak tahu apa yang seharusnya menjadi pandangan Anda di baris kedua.

Pertanyaan: Bagaimana cara membuat UIImageView muncul di layar dengan mengkodekannya alih-alih melakukannya di papan cerita

alex
sumber
7
Tidak terkait dengan pertanyaan Anda, tetapi, BTW, lebih dulu jika gambar ini bukan gambar yang harus sering Anda gunakan, Anda mungkin tidak ingin menggunakannya UIImage(named:...). Seperti yang dikatakan dokumen: "Jika Anda memiliki file gambar yang hanya akan ditampilkan sekali dan ingin memastikan bahwa file itu tidak ditambahkan ke cache sistem, Anda sebaiknya membuat gambar menggunakan UIImage(contentsOfFile:...). Ini akan membuat gambar sekali pakai Anda tidak masuk cache gambar sistem, yang berpotensi meningkatkan karakteristik penggunaan memori aplikasi Anda. " Hanya FYI.
Rob

Jawaban:

255

Pertama Anda membuat UIImagedari file gambar Anda, lalu buat UIImageViewdari itu:

let imageName = "yourImage.png"
let image = UIImage(named: imageName)
let imageView = UIImageView(image: image!)

Terakhir, Anda harus memberikan imageViewbingkai dan menambahkannya pada tampilan Anda agar terlihat:

imageView.frame = CGRect(x: 0, y: 0, width: 100, height: 200)
view.addSubview(imageView)
Nate Cook
sumber
39

Pertama buat UIImageView lalu tambahkan gambar di UIImageView.

    var imageView : UIImageView
    imageView  = UIImageView(frame:CGRectMake(10, 50, 100, 300));
    imageView.image = UIImage(named:"image.jpg")
    self.view.addSubview(imageView)
Shanmugasundharam
sumber
31

Jawaban ini adalah pembaruan untuk Swift 3.

Ini adalah bagaimana Anda dapat menambahkan tampilan gambar secara terprogram di mana Anda dapat mengontrol pembatas.

Class ViewController: UIViewController {

    let someImageView: UIImageView = {
       let theImageView = UIImageView()
       theImageView.image = UIImage(named: "yourImage.png")
       theImageView.translatesAutoresizingMaskIntoConstraints = false //You need to call this property so the image is added to your view
       return theImageView
    }()

    override func viewDidLoad() {
       super.viewDidLoad()

       view.addSubview(someImageView) //This add it the view controller without constraints
       someImageViewConstraints() //This function is outside the viewDidLoad function that controls the constraints
    }

    // do not forget the `.isActive = true` after every constraint
    func someImageViewConstraints() {
        someImageView.widthAnchor.constraint(equalToConstant: 180).isActive = true
        someImageView.heightAnchor.constraint(equalToConstant: 180).isActive = true
        someImageView.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true
        someImageView.centerYAnchor.constraint(equalTo: view.centerYAnchor, constant: 28).isActive = true
    }

}
MEnnabah
sumber
16

Anda dapat menggunakan di atas dalam satu baris.

  let imageView = UIImageView(image: UIImage(named: "yourImage.png")!)
Vikram Pote
sumber
2
Anda bisa, tapi itu tidak benar-benar "bersih" Swift
Alec O
12

Di Swift 3.0:

var imageView : UIImageView
    imageView  = UIImageView(frame:CGRect(x:10, y:50, width:100, height:300));
    imageView.image = UIImage(named:"Test.jpeg")
    self.view.addSubview(imageView)
Sandeep Singh
sumber
1
ukuran dan skala?
Martian2049
1
Suara kurang untuk terlalu banyak baris kode. Akan lebih baik untuk menulis seperti ini: let imageView = UIImageView(named: "Test.jpeg"); self.view.addSubview(imageView). 2 baris dan Anda menggunakan konstanta, bukan variabel. Kemudian gunakan Autoconstraint untuk menempatkannya.
kakubei
10

Terima kasih, MEnnabah, hanya untuk menambahkan ke kode Anda di mana Anda kehilangan =tanda di pernyataan deklarasi:

let someImageView: UIImageView = {
   let theImageView = UIImageView()
   theImageView.image = UIImage(named: "yourImage.png")
   theImageView.translatesAutoresizingMaskIntoConstraints = false //You need to call this property so the image is added to your view
   return theImageView
}()

Yang lainnya, semuanya sempurna untuk Swift 3.

Kekuatan penuh
sumber
6

Di Swift 4.2 dan Xcode 10.1

//Create image view simply like this.
let imgView = UIImageView()
imgView.frame = CGRect(x: 200, y: 200, width: 200, height: 200)
imgView.image = UIImage(named: "yourimagename")//Assign image to ImageView
imgView.imgViewCorners()
view.addSubview(imgView)//Add image to our view

//Add image view properties like this(This is one of the way to add properties).  
extension UIImageView {
    //If you want only round corners
    func imgViewCorners() {
        layer.cornerRadius = 10
        layer.borderWidth = 1.0
        layer.masksToBounds = true
    }
}
iOS
sumber
Jawaban ini berfungsi untuk Swift 4.2. Untuk seseorang seperti pemula, ekstensi mungkin menambah kebingungan dalam pemahaman kode meskipun masih bagus untuk dimiliki.
midtownguru
-2

Cepat 4:

Pertama buat outlet untuk UIImageView Anda

@IBOutlet var infoImage: UIImageView!

Kemudian gunakan properti gambar di UIImageView

infoImage.image = UIImage(named: "icons8-info-white")
Joel
sumber
Dalam 4.2 cepat kesalahan "tak terduga ditemukan nihil saat membuka bungkus opsional" dilemparkan dari baris kedua.
midtownguru