【问题标题】:How to create an array of images from assets folder in Swift 5?如何从 Swift 5 中的资产文件夹创建图像数组?
【发布时间】:2020-05-08 15:00:56
【问题描述】:

我是 Swift 开发的新手,在这几个月里,我将个性化一些基础项目,比如骰子应用程序。

目前我有一个在 StackOverflow 上不容易找到的问题:

1) 如何从 assets.xcassets 中的文件夹创建骰子面数组 (目前我已经手动将骰子的 6 个面加载到一个名为 diceArray 的数组中,但如果骰子有 50 个面,那将是浪费时间)

我的实际代码

class ViewController: UIViewController {


    @IBOutlet weak var diceImageView1: UIImageView!
    @IBOutlet weak var diceImageView2: UIImageView!


    @IBAction func rollButtonPressed(_ sender: UIButton) {

        let diceArray = [ #imageLiteral(resourceName: "DiceOne"), #imageLiteral(resourceName: "DiceTwo"), #imageLiteral(resourceName: "DiceThree"), #imageLiteral(resourceName: "DiceFour"), #imageLiteral(resourceName: "DiceFive"), #imageLiteral(resourceName: "DiceSix")]

        diceImageView1.image = diceArray.randomElement()
        diceImageView2.image = diceArray.randomElement()

    }

}

【问题讨论】:

标签: ios swift assets


【解决方案1】:

你的数组会包含什么?用户界面图像?如果是这样,只需使用

从资产中读取它们
var myImagesArray: [UIImage]
// Do this for each image.
let image = UIImage(named: "aName") ?? UIImage()
myImagesArray.append(image)

您可以将图像的名称存储在数组中:

var myImagesArray: [(faceNum: Int, name: String, image: UIImage)]
let image = UIImage(named: "face1") ?? UIImage()
let faceNum = 1
myImagesArray.append((1, "face1",image))

当你加载图片时,你可以测试一下

myImagesArray[i].num 

尚未使用

【讨论】:

    【解决方案2】:

    一种简单的方法是用固定的前缀和编号命名所有图像。将图像命名为face1,face2...face50

    var imagesArr = (0...50).compactMap { UIImage(named: "face\($0)") }
    

    var imagesArr = [UIImage]()
    (0...50).forEach { imagesArr.append(UIImage(named: "face\($0)")!) }
    

    【讨论】:

      【解决方案3】:

      我认为在一个数组上加载 50 个图像不是一个好主意。我知道您正在学习教程。
      对于更多相同类型的图像,你可以试试这个。

      • 尝试所有图像名称前缀相同。喜欢:骰子1,骰子2, Dice3... Dice50 // 这里的前缀是 Dice
      • 获取0-49之间的随机数
      • 假设你得到一个随机数30。现在你可以通过这种方式简单地获取图像
        let randomNumber = 30  
        let image = UIImage(named: "Dice\(randomNumber)")
        

      这样不需要创建一个包含50张图片的数组。

      【讨论】:

      • 在这种情况下,如何获取存储在 assets.xcassets 中的图像?
      • 通过这个你可以从assets.xcassets获取图片:UIImage.init(named: "Dice(randomNumber)")
      • 谢谢@Faysal Ahmed!我用这段代码解决了第一个问题: let randomNumber = Int.random(in: 0...50) let image = UIImage.init(named: "Dice(randomNumber)")
      猜你喜欢
      • 2016-06-28
      • 1970-01-01
      • 2020-05-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多