【问题标题】:Programmatically set image to UIImageView with Xcode 6.1/Swift使用 Xcode 6.1/Swift 以编程方式将图像设置为 UIImageView
【发布时间】:2014-11-20 12:02:51
【问题描述】:

我正在尝试在 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"),但仍然得到:

更新

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

【问题讨论】:

  • 您需要将该代码放入函数中。我会把它放在 viewDidLoad() 中。
  • 既然您将其声明为插座,您是否尝试过简单地分配图像而不是重新初始化它?而不是 bgImage = UIImageView(image: image) 只使用 bgImage.image = UIImage(named: "afternoon")?
  • 查看更新的 OP...XCode 新手...非常熟悉 JavaScript、jQuery、PHP 等

标签: ios xcode swift


【解决方案1】:

由于您已将 bgImage 分配并链接为 IBOutlet,因此无需将其初始化为 UIImageView...相反,您只需设置图像属性,如 bgImage.image = UIImage(named: "afternoon")。运行此代码后,图像看起来很好,因为它已经使用插座分配了。

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

【讨论】:

    【解决方案2】:

    使用 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
    

    【讨论】:

      【解决方案3】:

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

      • 你只需要输入 - “image”,你就会得到一个建议框 然后从列表中选择 -“Image Literal”(见附图)和

      • 然后点击方块就可以看到所有图片(见
        第二张附加图片)在您的图像资产中...或选择 来自那里的其他图像。

      • 现在点击方形框 - (选择后您将看到那个方形框 以上选项)

      【讨论】:

      • 哇,第一次在 IDE 中看到类似的东西,现在在我的代码中看起来很酷
      • 感谢好友的帮助。照顾好伙伴。
      【解决方案4】:

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

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

      【讨论】:

      • 我的 UIImage 返回 nil,因为你提到的原因,10x
      【解决方案5】:

      如果您想按照问题中显示的方式进行操作,这是一种内联方式

      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
      }
      

      【讨论】:

        【解决方案6】:

        这个怎么样;

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

        其中 image_1 在资产文件夹中为 image_1.png

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

        【讨论】:

          【解决方案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)
          

          【讨论】:

            【解决方案8】:

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

            【讨论】:

              【解决方案9】:

              这段代码放错地方了:

              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!
              

              【讨论】:

              • ..感谢您的帮助,但 UIImageView 仍然没有显示图像...请参阅更新的 OP
              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2021-05-22
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2018-11-30
              相关资源
              最近更新 更多