簡體   English   中英

使用Xcode 6.1 / Swift以編程方式將圖像設置為UIImageView

[英]Programmatically set image to UIImageView with Xcode 6.1/Swift

我正在嘗試在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,我的理解是PNG不需要在XCode 6.1中擴展。

還嘗試了bgImage.image = UIImage(named: "afternoon") ,但仍然得到:

在此輸入圖像描述

UPDATE

好的,我已經把代碼更新為UIImageViewviewDidLoad函數,但是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") 運行此代碼后,圖像顯示正常,因為它已使用插座分配。

在此輸入圖像描述

但是,如果它不是一個插座,並且你沒有將它連接到storyboard / 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中,您可以直接從選擇窗口中選擇圖像(新)...

  • 你只需要輸入 - “圖像”,然后你會得到一個建議框然后從列表中選擇 - “Image Literal”(見附圖)和

  • 然后點擊廣場,您將能夠看到所有圖像(見
    第二張附加圖片)在你的圖片資產中...或從那里選擇其他圖像。

在此輸入圖像描述

  • 現在點擊方框 - (選擇上面的選項后你會看到那個方框)

在此輸入圖像描述

好的,讓它使用它(以編程方式創建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在assets文件夾中作為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中,如果圖像返回為零。

單擊右側的圖像(實用程序) - >檢查目標成員身份

如果你想按照你在問題中展示的方式做到這一點,這是一種內聯方式

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM