UIImage(named: String) or UIImage swift 4

5

在我的应用程序图像视图中,从我的应用程序资产设置图像哪种方式更方便?我有两种方式:第一种是函数 UIImage(named: String) 或 UIImage,两种方法都对我有效,但我想知道哪个更好,因此以后我可以使用其中之一。

以下是两个示例:

//  first

 let myImages1 = ["dice1", "dice2", "dice3", "dice4", "dice5", "dice6"]

 @IBOutlet weak var diceImageView1: UIImageView!

 diceImageView1.image = UIImage(named: myImages1[index1])

// second

 let myImages2 = [ image1, image2, image3, image4, image5, image6 ]

 @IBOutlet weak var diceImageView2: UIImageView!

 diceImageView2.image = myImages2[index2]

这些方法都很糟糕,应该避免使用。 - El Tomato
2
@ElTomato 鉴于问题的性质,我认为您应该提供您陈述的理由。 - rmaddy
@rmaddy 我希望他们能够思考,而不是直接给出答案。 - El Tomato
@Fedir API文档对这两个有什么描述? - Alexander
2个回答

6

我们现在使用的是来自资源目录的图像,而不是字符串名称。这是设置UIImage更好的方法。但是从Swift 4.2开始,我们不能再使用资源名称了。 我们应该使用图像文字。 以下是示例:

let logoImageView: UIImageView = {
    let iv = UIImageView()

    // Set image with image literal
    iv.image = #imageLiteral(resourceName: "feedback")
    return iv
}()

请查看下面的截图。

enter image description here

在输入Image Literal后,您可以双击该项并从资源目录中选择您的图像。以下是截图。

enter image description here

但上次我使用的是 R.swift 库。在 Swift 项目中获取强类型、自动完成的资源,如图像、字体和 Segue。
代码示例:

enter image description here


感谢您的回答。 - Fedir Kryvyi
另外,您可以使用#color literal来使用来自资产目录的ColorSet。 - Alex Kolovatov

1

你可以创建一个UIImage的扩展,并使用静态变量来保存你的图像。

extension UIImage {
    static var dice1: UIImage? {
        return UIImage(named: "dice1")
    }
}


let imageView = UIImageView()
imageView.image = UIImage.dice1

或者您可以在Xcode中使用图像文字,这很好,因为您可以看到实际的图像ImageLiteral


方法一是一个可以接受的方法。真的吗? - El Tomato
为什么不使用@El Tomato? - Elhoej
@Elhoej 请向谷歌、雅虎或其他相关方面咨询有关UIImage内存崩溃的问题。 - El Tomato
1
我明白了,但这只会发生在大型数据数组中。对于6张图片来说,使用图像字面量数组是可以的。 - Elhoej

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接