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

时间:2014-11-20 12:02:51

标签: ios xcode 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"),但仍然得到:

enter image description here

更新

好的,我已将代码更新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)

    }

9 个答案:

答案 0 :(得分:137)

由于您已将bgImage指定并链接为IBOutlet,因此无需将其初始化为UIImageView ...而您需要做的就是设置像bgImage.image = UIImage(named: "afternoon")这样的图像属性。运行此代码后,图像显示正常,因为它已使用插座分配。

enter image description here

但是,如果它不是一个插座,并且你没有将它连接到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!)
    }
}

答案 1 :(得分:40)

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

  • 您只需输入 - "图像"你会得到一个意见箱 然后选择 - " Image Literal"从列表(见附图)和

  • 然后点击广场,您将能够看到所有图像(参见
    第二张附加图片)在您的图片资产中...或选择 来自那里的其他图片。

enter image description here

  • 现在点击方框 - (选择后你会看到那个方框) 上面的选项)

enter image description here

答案 2 :(得分:8)

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

答案 3 :(得分:6)

这个怎么样;

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

其中image_1位于assets文件夹中,为image_1。 png

这对我有用,因为我使用开关盒来显示图像幻灯片。

答案 4 :(得分:4)

此代码位置错误:

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!

答案 5 :(得分:1)

使用swift语法,这对我有用:

    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

答案 6 :(得分:1)

在Swift 4中,如果图像返回为零。

单击右侧的图像(实用程序) - >检查目标会员资格

答案 7 :(得分:1)

如果你想按照你在问题中展示的方式进行,这是一种内联方式

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
}

答案 8 :(得分:0)

您只需要拖放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")
    }
}