首页 文章

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

提问于
浏览
72

我正在尝试在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说"expected declaration"与 bgImage = UIImageView(image: image) Image "afternoon" 是一个PNG,我的理解是PNG不需要在XCode 6.1中扩展 .

也尝试了 bgImage.image = UIImage(named: "afternoon") ,但仍然得到:

enter image description here

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)

    }

8 回答

  • 1

    由于您已将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

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

    • 您只需要输入 - “图像”,然后您将获得一个建议框,然后从列表中选择 - “图像文字”(参见附图)和

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

    enter image description here

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

    enter image description here

  • 7

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

    这个怎么样;

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

    其中image_1在assets文件夹中作为image_1 . png .

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

  • 1

    这段代码在错误的地方:

    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

    使用快速语法,这对我有用:

    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
    
  • 131

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

    单击右侧的图像(实用程序) - >检查目标成员身份

  • 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
    }
    

相关问题