如何在单独的函数中以编程方式在swift中创建UIImageView?

时间:2015-04-01 14:48:29

标签: swift uiimageview

我想以编程方式在函数中创建图像视图。这将保留图像视图的背景和一些徽标 - 然后在我的所有其他图像视图中,我可以完成所有功能,并且我不必在每个图像上执行相同的操作。

我创建了一个空白的swift文件并在其中加入以下内容:

import Foundation
import UIKit

func background() {

    var imageView : UIImageView
    imageView  = UIImageView(frame:CGRectMake(10, 50, 100, 300));
    imageView.image = UIImage(named:"image.jpg")
    self.view.addSubview(imageView)

}

我遇到的唯一错误是self.view.addSubview(imageView)行。错误消息为Use of unresolved identifier 'self'。我尝试删除单词self,以便该行代替view.addSubview(imageView),然后Use of unresolved identifier 'view'

我的问题是我做错了什么?

由于

编辑:

所以我现在把它改成了这个,这是正确的吗?

导入基金会 导入UIKit

class MyViewController: UIViewController {

    func background() {

        var imageView : UIImageView
        imageView  = UIImageView(frame:CGRectMake(10, 50, 100, 300));
        imageView.image = UIImage(named:"bg.png")
        self.view.addSubview(imageView)

    }

}

我不再在该部分中出现任何错误,但是当从viewcontroller类调用该函数时,我在视图中得到了错误消息Use of unresolved identifier 'background'. I should add that I am calling it in the other document by doing this background()`do load function。

2 个答案:

答案 0 :(得分:2)

要在swift中调用实例函数,您可以采用两种方式,一种来自另一个实例函数,或者通过创建该类的实例然后调用它。

来自实例函数:

class MyViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        // Called from within another instance function
        self.background()
    }

    func background() {

        var imageView : UIImageView
        imageView  = UIImageView(frame:CGRectMake(10, 50, 100, 300));
        imageView.image = UIImage(named:"bg.png")
        self.view.addSubview(imageView)

    }

}

或者在代码中的其他地方,您可以创建一个实例并调用这样的背景:

func someOtherFunction() {
// Create instance and then call background
        var myView:MyViewController = MyViewController()
        myView.background()
    }

我建议您了解实例方法与类方法之间的区别,并确定您要执行的操作: What is the difference between class and instance methods?

答案 1 :(得分:0)

您需要一个属于UIViewController的子类的类才能访问view属性