your programing

Xcode 6.1 / Swift를 사용하여 프로그래밍 방식으로 이미지를 UIImageView로 설정

lovepro 2020. 10. 13. 08:21
반응형

Xcode 6.1 / Swift를 사용하여 프로그래밍 방식으로 이미지를 UIImageView로 설정


Xcode 6.1에서 프로그래밍 방식으로 UIImageView를 설정하려고합니다.

@IBOutlet weak var bgImage: UIImageView!

var image : UIImage = UIImage(named:"afternoon")!
bgImage = UIImageView(image: image)
bgImage.frame = CGRect(x: 0, y: 0, width: 100, height: 200)
view.addSubview(bgImage)

그러나 Xcode는 bgImage = UIImageView(image: image)Image 와 함께 "예상 선언" "afternoon"이 PNG 라고 말하고 있으며 내 이해는 PNG가 XCode 6.1에서 확장이 필요하지 않다는 것입니다.

또한 시도 bgImage.image = UIImage(named: "afternoon")했지만 여전히 다음을 얻습니다.

여기에 이미지 설명 입력

최신 정보

좋아, 업데이트 UIImageView코드를 viewDidLoad함수에 넣었 지만 UIImageView여전히 이미지가 표시되지 않습니다 (기본 디렉토리에 오후 .png로 존재 함).

@IBOutlet weak var bgImage: UIImageView!
@IBOutlet weak var dateLabel: UILabel!
@IBOutlet weak var timeLabel: UILabel!

override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.

    updateTime()
    var timer = NSTimer()
    let aSelector : Selector = "updateTime"
    timer = NSTimer.scheduledTimerWithTimeInterval(0.01, target: self, selector: aSelector, userInfo: nil, repeats: true)

    var image : UIImage = UIImage(named:"afternoon")!
    bgImage = UIImageView(image: image)
}

bgImage가 IBOutlet으로 할당되고 링크되었으므로 UIImageView로 초기화 할 필요가 없습니다. 대신해야 할 일은 이미지 속성을 bgImage.image = UIImage(named: "afternoon"). 이 코드를 실행 한 후 이미 콘센트를 사용하여 할당되었으므로 이미지가 정상적으로 표시되었습니다.

여기에 이미지 설명 입력

그러나 콘센트가 아니고 스토리 보드 / xib 파일의 UIImageView 개체에 이미 연결되어 있지 않은 경우 다음과 같이 할 수 있습니다.

class ViewController: UIViewController {
    var bgImage: UIImageView?

    override func viewDidLoad() {
        super.viewDidLoad()

        var image: UIImage = UIImage(named: "afternoon")!
        bgImage = UIImageView(image: image)
        bgImage!.frame = CGRectMake(0,0,100,200)
        self.view.addSubview(bgImage!)
    }
}

xcode 8에서는 선택 창 (NEW)에서 이미지를 직접 선택할 수 있습니다.

  • "이미지"를 입력하면 제안 상자가 표시되고 목록에서 "이미지 리터럴"을 선택합니다 (첨부 된 그림 참조).

  • 그런 다음 사각형을 탭하면
    이미지 자산에있는 모든 이미지 ( 첨부 두 번째 그림 참조)를 볼 수 있습니다 ... 또는 거기에서 다른 이미지를 선택합니다.

여기에 이미지 설명 입력

  • 이제 사각형 상자를 탭하십시오-(위 옵션을 선택하면 사각형 상자가 표시됩니다)

여기에 이미지 설명 입력


좋아, 이것으로 작동하도록해라 (프로그래밍 방식으로 UIImageView 생성) :

var imageViewObject :UIImageView

imageViewObject = UIImageView(frame:CGRectMake(0, 0, 600, 600))

imageViewObject.image = UIImage(named:"afternoon")

self.view.addSubview(imageViewObject)

self.view.sendSubviewToBack(imageViewObject)

이것은 어떤가요;

myImageView.image=UIImage(named: "image_1")

여기서 image_1은 image_1로 자산 폴더 내에 있습니다. png .

This worked for me since i'm using a switch case to display an image slide.


This code is in the wrong place:

var image : UIImage = UIImage(named:"afternoon")!
bgImage = UIImageView(image: image)
bgImage.frame = CGRect(x: 0, y: 0, width: 100, height: 200)
view.addSubview(bgImage)

You must place it inside a function. I recommend moving it inside the viewDidLoad function.

In general, the only code you can add within the class that's not inside of a function are variable declarations like:

@IBOutlet weak var bgImage: UIImageView!

With swift syntax this worked for me :

    let leftImageView = UIImageView()
    leftImageView.image = UIImage(named: "email")

    let leftView = UIView()
    leftView.addSubview(leftImageView)

    leftView.frame = CGRect(x: 0, y: 0, width: 40, height: 40)
    leftImageView.frame = CGRect(x: 10, y: 10, width: 20, height: 20)
    userNameTextField.leftViewMode = .always
    userNameTextField.leftView = leftView

In Swift 4, if the image is returned as nil.

Click on image, on the right hand side (Utilities) -> Check Target Membership


If you want to do it the way you showed in your question, this is a way to do it inline

class YourClass: UIViewController{

  @IBOutlet weak var tableView: UITableView!
  //other IBOutlets

  //THIS is how you declare a UIImageView inline
  let placeholderImage : UIImageView = {
        let placeholderImage = UIImageView(image: UIImage(named: "nophoto"))
        placeholderImage.contentMode = .scaleAspectFill
        return placeholderImage
    }()

   var someVariable: String!
   var someOtherVariable: Int!

   func someMethod(){
      //method code
   }

   //and so on
}

You just need to drag and drop an ImageView, create the outlet action, link it, and provide an image (Xcode is going to look in your assets folder for the name you provided (here: "toronto"))

In yourProject/ViewController.swift

import UIKit

class ViewController: UIViewController {

    @IBOutlet weak var imgView: UIImageView!

    override func viewDidLoad() {
        super.viewDidLoad()

        imgView.image = UIImage(named: "toronto")
    }
}

참고 URL : https://stackoverflow.com/questions/27039140/programmatically-set-image-to-uiimageview-with-xcode-6-1-swift

반응형