UIImage不使用Swift显示

时间:2014-06-04 08:20:50

标签: ios uiimage swift

使用Swift编写的用于显示UIImages的代码可以在iOS 8.0模拟器中运行,但不能在运行IOS 7.0的手机上运行。

let image1 = UIImage(named: "img1")
let imageview = UIImageView(image: image1)
self.view.addSubview(imageview)

let image2 = UIImage(named: "img2")
let button = UIButton(frame: CGRect(origin: CGPoint(x: 0, y: 100), size: image2.size)
button.setImage(image2, forState: UIControlState.Normal)
self.view.addSubview(button)

图像位于正确的位置,具有正确的大小和有效的引用,除了在运行iOS 8的模拟器上外,它们只是没有显示。

这对其他人来说是个问题吗?

修改 从Images.xcassets中删除,清理项目并将文件复制到包本身似乎对我有用。

7 个答案:

答案 0 :(得分:8)

为了显示图像,您必须按以下方式更改代码

let image1 = UIImage(named: "img1.jpg")
let imageview = UIImageView(image: image1)
self.view.addSubview(imageview)

let image2 = UIImage(named: "img2.jpg")
let button = UIButton(frame: CGRect(origin: CGPoint(x: 0, y: 100), size: image2.size)
button.setImage(image2, forState: UIControlState.Normal)
self.view.addSubview(button)

记住swift不支持.png格式图片,它支持.jpg格式。

答案 1 :(得分:2)

问题的投票与其他答案之间似乎存在脱节,因此我将为如何在Swift中显示图像添加一个通用答案。这就是最初把我带到这里的原因。

如何在Swift中显示图像

使用UIImage获取主要包中图像的引用。

let image = UIImage(named: "rocket.png")
imageView.image = image

备注

  • imageViewUIImageView
  • 在我的测试中,包括或排除.png文件扩展名没有区别。但是,如果您使用多种图像格式,可能需要包括。
  • 同样在我的测试中,图像是直接添加到项目还是在Assets.xcassets中没有区别。
  • 如果您需要的图片不在主套装中,请参阅this question
  • 根据原始问题中的编辑,删除图像并将其重新添加到包中解决了问题。

答案 2 :(得分:2)

您将检查图像是否已添加到框架中,如果未选中该图像,则无法加载资源,但如果您选中该图像,则会加载图像enter image description here

答案 3 :(得分:1)

我在iOS 8-Simulator和我的iOS 7设备上尝试了你的代码,它完成了它应该做的事情。所以不,在我的情况下,我没有看到问题。

我将img1更改为img1.JPG(文件名),将img2更改为img2.png。我将图像直接复制到视图控制器所在的文件夹中。

答案 4 :(得分:1)

我将图像存储在“Images.xcassets”文件夹中,我的图像没有出现在我的设备上,但它们确实出现在模拟器上。为了在我的设备(iPhone 5)上显示“Images.xcassets”图像,我,对我有用的解决方案是复制“Images.xcassets”文件夹的包资源

复制捆绑资源:选择目标>构建阶段>复制捆绑资源>选择“+”(添加项目)>选择“Images.xcassets

答案 5 :(得分:0)

迅速5:

由于各种原因,不再接受编译的答案,所以这是我的更新版本:

    let image1 = UIImage(named: "img1.jpg")
    if let myImage1 = image1 {
        let imageview = UIImageView(image: myImage1)
        self.view.addSubview(imageview)
    } else {
        print ("img1 not loaded")
    }

    let image2 = UIImage(named: "img2.jpg")

    if let myImage2 = image2 {
        let button = UIButton(frame: CGRect(origin: CGPoint(x: 0, y: 100), size: myImage2.size))
        button.setImage(myImage2, for: .normal)
        self.view.addSubview(button)
    } else {
        print ("img2 not loaded")
    }

答案 6 :(得分:0)

一个可能的原因是高度。检查 UIImageView 的高度,可能在代码或故事板中更高。