source

Xcode 6.1/Swift로 프로그래밍 방식으로 이미지를 UImageView로 설정

ittop 2023. 10. 19. 22:44
반응형

Xcode 6.1/Swift로 프로그래밍 방식으로 이미지를 UImageView로 설정

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)이미지"afternoon"PNG이며, X코드 6.1에서 PNG는 확장이 필요 없는 것으로 알고 있습니다.

또한 시도해 보았습니다.bgImage.image = UIImage(named: "afternoon"), 그래도 다음을 얻을 수 있습니다.

enter image description here

갱신하다

네, 업데이트할 코드를 넣었습니다.UIImageView안으로viewDidLoad기능은 하지만UIImageView이미지(기본 디렉터리에 afternoon.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"). 이 코드를 실행한 후 이미 콘센트를 사용하여 할당된 이미지이므로 정상적으로 표시되었습니다.

enter image description here

그러나 콘센트가 아니고 스토리보드/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)에서 이미지를 직접 선택할 수 있습니다.

  • - "image"를 입력하면 제안 상자가 표시되고 목록에서 "Image Literial"을 선택합니다(첨부된 사진 참조).

  • 사각형을 누르면 모든 이미지를 볼 수 있습니다( 참조).
    두 번째 첨부 사진) 이미지 자산에 있는...다른 이미지를 선택합니다.

enter image description here

  • 이제 사각형 상자를 누릅니다. (위의 옵션을 선택하면 사각형 상자가 나타납니다.)

enter image description here

이 작업을 통해 작동(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로서 자산 폴더 내에 있습니다.

저는 스위치 케이스로 이미지 슬라이드를 표시하고 있기 때문에 효과가 있었습니다.

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

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!

신속한 구문 분석으로 효과가 있었습니다.

    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

Swift 4에서 이미지가 0으로 반환된 경우.

우측 이미지 클릭 (유틸리티) -> Target Membership 확인

질문에서 보여준 것처럼 하고 싶다면, 이것이 인라인으로 하는 방법입니다.

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
}

당신은 단지 끌어다 놓기만 하면 됩니다.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")
    }
}

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

반응형