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


87

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

2
그 코드를 함수에 넣어야합니다. viewDidLoad ()에 넣었습니다.
HAS

1
콘센트로 선언 했으므로 이미지를 다시 초기화하는 대신 단순히 할당 해 보셨습니까? 대신 bgImage = UIImageView(image: image)사용하여 단지 bgImage.image = UIImage(named: "afternoon")?
c_rath 2014

1
업데이트 OP ... 엑스 코드에 아주 새로운 ... 자바 스크립트, jQuery를, PHP 등 잘 알고 참조
IlludiumPu36

답변:


159

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

50

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

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

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

여기에 이미지 설명 입력

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

여기에 이미지 설명 입력


4
와우, IDE를에 그런 일을보고 처음으로, 외모가 꽤 지금 내 코드에서 냉각
Big_Chair

도와 주셔서 감사합니다. 친구를 돌봐주세요.
thesamoanppprogrammer 2010 년

11

좋아, 이것으로 작동하도록해라 (프로그래밍 방식으로 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)

10

이것은 어떤가요;

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

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

스위치 케이스를 사용하여 이미지 슬라이드를 표시하기 때문에 이것은 나를 위해 일했습니다.


5

이 코드는 잘못된 위치에 있습니다.

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

함수 안에 넣어야합니다. viewDidLoad함수 내부로 이동하는 것이 좋습니다 .

일반적으로 함수 내부가 아닌 클래스 내에 추가 할 수있는 유일한 코드는 다음과 같은 변수 선언입니다.

@IBOutlet weak var bgImage: UIImageView!

1
당신의 도움에 대한 ..thanks,하지만 UIImageView에 여전히 ... 업데이트 OP 볼 수있는 이미지를 표시되지 않습니다
IlludiumPu36

2

빠른 구문으로 이것은 나를 위해 일했습니다.

    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

2

Swift 4에서 이미지가 nil로 반환되는 경우.

오른쪽 (유틸리티) 이미지 클릭-> 대상 멤버십 확인


2

질문에서 보여준 방식으로하고 싶다면 인라인으로하는 방법입니다.

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
}

2

을 드래그 앤 드롭하고 ImageView, 콘센트 작업을 만들고, 연결하고, 이미지를 제공하기 만하면 됩니다 (Xcode는 assets폴더 에서 사용자가 제공 한 이름 (여기 : "toronto") 을 찾습니다 ).

yourProject/ViewController.swift

import UIKit

class ViewController: UIViewController {

    @IBOutlet weak var imgView: UIImageView!

    override func viewDidLoad() {
        super.viewDidLoad()

        imgView.image = UIImage(named: "toronto")
    }
}
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.