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


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)

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)

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
    }

}

16

Anda dapat menggunakan di atas dalam satu baris.

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

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)

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.


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
    }
}

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")

Dalam 4.2 cepat kesalahan "tak terduga ditemukan nihil saat membuka bungkus opsional" dilemparkan dari baris kedua.
midtownguru
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.