Ios UIImage未使用Swift显示

Ios UIImage未使用Swift显示,ios,uiimage,swift,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(o

用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.xcsets中删除、清理项目并将文件复制到捆绑包本身似乎对我有效。

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


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

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

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格式。

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


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

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

如何在Swift中显示图像 使用
UIImage
获取对主捆绑包中图像的引用

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

  • imageView
    是一个
    UIImageView
  • 在我的测试中,包含或不包含.png文件扩展名并没有带来不同。但是,如果您使用多种图像格式,则可能需要包含
  • 同样在我的测试中,图像是直接添加到项目中还是在Assets.xcsets中都没有区别
  • 如果需要不在主捆绑包中的图像,请参阅
  • 根据原始问题中的编辑,删除图像并将其重新添加到包中是解决问题的方法

您将检查图像是否已添加到您的框架中,如果未选中,您将无法加载资源,但如果您检查,图像将被加载

Swift 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")
    }

一个可能的原因是高度。检查UIImageView的高度,在代码或情节提要中可能更高。

尝试将“img1”更改为“img1.png”(添加图像类型)设置ImageViewFrame我对Swift和UIImages也有问题。出于某种原因,在使用Objective-C和Swift的项目中,当加载
UIImage(名称:…)
并在iOS 7.1.1上运行应用程序时,无法从应用程序包中找到UIImages。我遵循了编辑说明。重要的是要注意“清理项目”“这是必需的。仅仅构建并运行是不够的。我的iphone5运行的是iOS7.1.1,我还必须将我的图像从xcsets文件中移出,放入项目中,就像我说的iOS7一样(需要更多字符才能回答此问题。)d您的项目使用的是哪个基本SDK?iOS 8 SDK和部署目标是iOS 7.0。但您必须使用iOS 8 SDK for swift,不是吗?据我所知,是的。我的设置是相同的,但它仍然不会显示在我的设备上。非常奇怪啊。因此,只有在lso从images.xcsets中删除它。我想xcsets就是问题所在。感谢您的帮助PNG在Swift中工作,而不是为我在images.xcsets中工作。Swift在游乐场中都支持,如果是PNG,则需要让image1=UIImage(名为:“img1.jpg”),如果是jpg,则需要让image1=UIImage(名为:“img1.jpg”)这是定义映像扩展名的images.xcsets问题的正确解决方案。警告:如果您将映像作为images.xcsets的一部分添加到解决方案中的另一个文件夹中,您实际上是在项目中添加了两个相同的映像,从长远来看,这对您的应用程序不利。答案是:没有明确说明更改了什么。更改的只是将
.jpg
添加到每个文件名的末尾。由于三个原因,该代码不再在Swift 5中编译。我将在下面添加一个编译版本。我的Swift SpriteKit项目自动包含一个Assets.xAssets映像管理器。在这里,我写了有关const的内容从这些图像重建精灵或精灵节点: