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

我想在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") 。 运行此代码后,图像显示正常,因为它已被分配使用sockets。

在这里输入图像说明

但是,如果它不是一个出口,你没有它已经连接到故事板/ 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中,您可以直接从select窗口(NEW)中select图像…

  • 你只需要input“image”,你会得到一个build议框,然后从列表中select“Image Literal”(见附图)

  • 然后点击广场,你将能够看到所有的图像(见英寸
    第二张附加的图片),它们位于您的图片资源中…或者从那里select其他图片。

在这里输入图像说明

  • 现在点击方框 – (select上面的选项后,你会看到方框)

在这里输入图像说明

好吧,得到它的工作(编程创buildUIImageView):

 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) 

你必须把它放在一个函数里面。 我build议将其移动到viewDidLoad函数中。

通常,你可以在类中添加的不在函数内部的唯一代码是variables声明,如:

 @IBOutlet weak var bgImage: UIImageView! 

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

点击图片,在右侧(实用工具) – >检查目标成员

用快速的语法,这对我工作:

  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