Làm cách nào để bạn tạo một UIImage View theo lập trình - Swift


107

Tôi đang cố gắng tạo Chế độ xem hình ảnh có lập trình, tôi có chế độ xem mới và tôi đã thử làm điều này

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

này đã không làm việc bởi vì tôi không biết điều này nên yourview trong dòng thứ hai.

Câu hỏi: Làm cách nào để tạo UIImageView xuất hiện trên màn hình bằng cách mã hóa nó thay vì thực hiện trong bảng phân cảnh


7
Không liên quan đến câu hỏi của bạn, nhưng, BTW, hãy cảnh báo trước nếu hình ảnh này không phải là hình ảnh mà bạn sẽ cần sử dụng nhiều, bạn có thể không muốn sử dụng UIImage(named:...). Như tài liệu nói: "Nếu bạn có một tệp hình ảnh chỉ được hiển thị một lần và muốn đảm bảo rằng tệp đó không bị thêm vào bộ nhớ cache của hệ thống, thay vào đó, bạn nên tạo hình ảnh của mình bằng cách sử dụng UIImage(contentsOfFile:...). Điều này sẽ giúp bạn không sử dụng hình ảnh một lần của bộ nhớ cache hình ảnh hệ thống, có khả năng cải thiện đặc tính sử dụng bộ nhớ của ứng dụng của bạn. " Chỉ là một FYI.
Rob

Câu trả lời:


255

Trước tiên, bạn tạo một UIImagetừ tệp hình ảnh của mình, sau đó tạo một UIImageViewtừ đó:

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

Cuối cùng, bạn sẽ cần cung cấp imageViewmột khung và thêm nó vào chế độ xem của bạn để nó hiển thị:

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

39

Đầu tiên tạo UIImageView sau đó thêm hình ảnh vào UIImageView.

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

31

Câu trả lời này là bản cập nhật cho Swift 3.

Đây là cách bạn có thể thêm chế độ xem hình ảnh theo chương trình, nơi bạn có thể kiểm soát các ràng buộc.

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

Bạn có thể sử dụng ở trên trong một dòng.

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

2
Bạn có thể, nhưng nó không chính xác là Swift "sạch sẽ"
Alec O

12

Trong 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
kích thước và quy mô?
Martian2049

1
Bỏ phiếu dưới mức cho quá nhiều dòng mã. Sẽ tốt hơn để viết nó như thế này: let imageView = UIImageView(named: "Test.jpeg"); self.view.addSubview(imageView). 2 dòng và bạn sử dụng một hằng số thay vì một biến. Sau đó, sử dụng Autoconstraint để đặt nó.
kakubei

10

Cảm ơn MEnnabah, chỉ để thêm vào mã của bạn nơi bạn thiếu =dấu trong câu lệnh khai báo:

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

Mọi thứ khác đều hoàn hảo cho Swift 3.


6

Trong Swift 4.2 và 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
    }
}

Câu trả lời này phù hợp với Swift 4.2. Đối với một số người như một người mới làm quen, tiện ích mở rộng có thể gây nhầm lẫn cho việc hiểu mã mặc dù nó vẫn rất tốt để có.
midtownguru

-2

Swift 4:

Trước tiên, hãy tạo một lối thoát cho UIImageView của bạn

@IBOutlet var infoImage: UIImageView!

Sau đó, sử dụng thuộc tính hình ảnh trong UIImageView

infoImage.image = UIImage(named: "icons8-info-white")

Trong phiên bản nhanh 4.2, lỗi "bất ngờ được tìm thấy bằng không khi bỏ gói tùy chọn" được đưa ra từ dòng thứ hai.
midtownguru
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.