프로그래밍 방식으로 UIImage보기를 만드는 방법-Swift


107

프로그래밍 방식으로 UIImage 뷰를 만들려고하는데 새 뷰가 있고 이렇게 시도했습니다.

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

두 번째 줄에서 이것이 당신의 견해 가 되어야할지 모르기 때문에 이것은 작동하지 않았습니다 .

질문 : UIImageView를 스토리 보드에서하는 대신 코딩하여 화면에 표시하려면 어떻게해야합니까?


7
귀하의 질문과 관련이 없지만 BTW,이 이미지가 많이 사용해야하는 이미지가 아닌 경우을 사용하지 않을 수 있습니다 UIImage(named:...). 문서에서 다음과 같이 말합니다. "한 번만 표시되는 이미지 파일이 있고 시스템 캐시에 추가되지 않도록하려면 대신을 사용하여 이미지를 만들어야합니다 UIImage(contentsOfFile:...). 이렇게하면 일회용 이미지가 차단됩니다. 앱의 메모리 사용 특성을 잠재적으로 향상시킬 수 있습니다. " 참고로.
Rob

답변:


255

먼저 UIImage이미지 파일에서을 생성 한 다음 다음에서 생성 UIImageView합니다.

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

마지막으로 imageView프레임 을 제공 하고 볼 수 있도록 뷰를 추가해야합니다.

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

39

먼저 UIImageView를 만든 다음 UIImageView에 이미지를 추가하십시오.

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

31

이 답변은 Swift 3 업데이트입니다.

이것이 제약 조건을 제어 할 수있는 프로그래밍 방식으로 이미지보기를 추가하는 방법입니다.

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

위의 한 줄로 사용할 수 있습니다.

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

2
당신은 할 수 있지만, 정확히 "깨끗한"스위프트 아니다
알렉 O

12

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
크기와 규모?
Martian2049

1
너무 많은 코드 라인에 대해 과소 평가되었습니다. 다음과 같이 작성하는 것이 좋습니다 let imageView = UIImageView(named: "Test.jpeg"); self.view.addSubview(imageView). 두 줄이고 변수 대신 상수를 사용합니다. 그런 다음 Autoconstraint를 사용하여 배치합니다.
kakubei

10

감사합니다, MEnnabah, =선언문 에서 기호 가 누락 된 코드에 추가하기 위해 :

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

다른 모든 것은 Swift 3에 완벽합니다.


6

Swift 4.2 및 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
    }
}

이 답변은 Swift 4.2에서 작동합니다. 초보자와 같은 사람에게는 확장 기능이 있어도 여전히 코드를 이해하는 데 혼란을 줄 수 있습니다.
midtownguru

-2

스위프트 4 :

먼저 UIImageView에 대한 콘센트를 만듭니다.

@IBOutlet var infoImage: UIImageView!

그런 다음 UIImageView에서 이미지 속성을 사용하십시오.

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

신속한 4.2에서 "옵션을 풀 때 예기치 않게 nil을 찾았습니다"라는 오류가 두 번째 줄에서 발생했습니다.
midtownguru
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.