使用Xcode 6.1 / Swift以编程方式将图像设置为UIImageView


85

我试图在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()中。
2014年

1
既然您将其声明为出口,您是否尝试过简单地分配图像而不是重新初始化它?而不是bgImage = UIImageView(image: image)仅仅使用bgImage.image = UIImage(named: "afternoon")
c_rath 2014年

1
查看更新的OP ... XCode的新手...非常熟悉JavaScript,jQuery,PHP等
IlludiumPu36

Answers:


158

由于您已将bgImage分配并链接为IBOutlet,因此无需将其初始化为UIImageView ...而是只需将image属性设置为即可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!)
    }
}

49

在xcode 8中,您可以直接从选择窗口中选择图像(NEW)...

  • 您只需要键入-“ image”,您将得到一个建议框,然后从列表中选择-“ Image Literal”(请参见附图),然后

  • 然后点击正方形,您将可以看到图像资源中的所有图像(请参见
    第二张图片)...或从中选择其他图像。

在此处输入图片说明

  • 现在点击方形框-(选择上述选项后,您将看到该方形框)

在此处输入图片说明


4
哇,第一次在IDE中看到类似的东西,现在在我的代码中看起来很酷
Big_Chair

感谢您的帮助。照顾伴侣。
thesamoanppprogrammer

11

OK,可以使用它(以编程方式创建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)

9

这个怎么样;

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
..感谢您的帮助,但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")
    }
}
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.