在不重复太多代码的情况下根据数字将 switch 语句写入 return 图像的最佳方法是什么?

What is the best way to write a switch statement to return an image depending on a number without repeating to much code?

我有一个 switch 语句 returns 基于案例编号的图像。我有 8 张水滴图像,开始时是空滴 (drop_empty),当数字从 1...6 增加时,依此类推,如我的代码所示,我想更改图像。对于屏幕截图中显示的 8 张图像,我将每张图像都设置在 @IBOutlet 和数组中,以便选择要分配给什么图像。我确实觉得我重复自己的方式太多了,我希望找到一个更好的解决方案来缩短我的重复。 希望我的代码更有意义。

    @IBOutlet var waterDropImage1: UIImageView!
    
    @IBOutlet var waterDropImage2: UIImageView!
    
    @IBOutlet var waterDropImage3: UIImageView!
    
    @IBOutlet var waterDropImage4: UIImageView!
    
    @IBOutlet var waterDropImage5: UIImageView!
    
    @IBOutlet var waterDropImage6: UIImageView!
    
    @IBOutlet var waterDropImage7: UIImageView!
    
    @IBOutlet var waterDropImage8: UIImageView!
    
    // Example function name that I would call
    func showDroplets() {
        dropletImageManager(waterPercentage: percentage, droplet: [waterDropImage1, waterDropImage2, waterDropImage3, waterDropImage4, waterDropImage5, waterDropImage6, waterDropImage7, waterDropImage8])
     }

    func dropletImageManager(waterPercentage: Int, droplet: [UIImageView]) {
        switch waterPercentage {
        case 0:
            droplet[0].image = UIImage(named: "drop_empty")
        case 1...6:
            droplet[0].image = UIImage(named: "drop_half")
        case 7...12:
            droplet[0].image = UIImage(named: "drop_full")
        case 13...18:
            droplet[0].image = UIImage(named: "drop_full")
            droplet[1].image = UIImage(named: "drop_half")
        case 19...25:
            droplet[0].image = UIImage(named: "drop_full")
            droplet[1].image = UIImage(named: "drop_full")
        case 26...31:
            droplet[0].image = UIImage(named: "drop_full")
            droplet[1].image = UIImage(named: "drop_full")
            droplet[2].image = UIImage(named: "drop_empty")
        case 32...38:
            droplet[0].image = UIImage(named: "drop_full")
            droplet[1].image = UIImage(named: "drop_full")
            droplet[2].image = UIImage(named: "drop_full")
        case 39...45:
            droplet[0].image = UIImage(named: "drop_full")
            droplet[1].image = UIImage(named: "drop_full")
            droplet[2].image = UIImage(named: "drop_full")
            droplet[3].image = UIImage(named: "drop_half")
        case 46...52:
            droplet[0].image = UIImage(named: "drop_full")
            droplet[1].image = UIImage(named: "drop_full")
            droplet[2].image = UIImage(named: "drop_full")
            droplet[3].image = UIImage(named: "drop_full")
            droplet[4].image = UIImage(named: "drop_half")
        case 53...59:
            droplet[0].image = UIImage(named: "drop_full")
            droplet[1].image = UIImage(named: "drop_full")
            droplet[2].image = UIImage(named: "drop_full")
            droplet[3].image = UIImage(named: "drop_full")
            droplet[4].image = UIImage(named: "drop_full")
        case 60...66:
            droplet[0].image = UIImage(named: "drop_full")
            droplet[1].image = UIImage(named: "drop_full")
            droplet[2].image = UIImage(named: "drop_full")
            droplet[3].image = UIImage(named: "drop_full")
            droplet[4].image = UIImage(named: "drop_full")
            droplet[5].image = UIImage(named: "drop_half")
        case 67...73:
            droplet[0].image = UIImage(named: "drop_full")
            droplet[1].image = UIImage(named: "drop_full")
            droplet[2].image = UIImage(named: "drop_full")
            droplet[3].image = UIImage(named: "drop_full")
            droplet[4].image = UIImage(named: "drop_full")
            droplet[5].image = UIImage(named: "drop_full")
        case 74...78:
            droplet[0].image = UIImage(named: "drop_full")
            droplet[1].image = UIImage(named: "drop_full")
            droplet[2].image = UIImage(named: "drop_full")
            droplet[3].image = UIImage(named: "drop_full")
            droplet[4].image = UIImage(named: "drop_full")
            droplet[5].image = UIImage(named: "drop_full")
            droplet[6].image = UIImage(named: "drop_half")
        case 79...85:
            droplet[0].image = UIImage(named: "drop_full")
            droplet[1].image = UIImage(named: "drop_full")
            droplet[2].image = UIImage(named: "drop_full")
            droplet[3].image = UIImage(named: "drop_full")
            droplet[4].image = UIImage(named: "drop_full")
            droplet[5].image = UIImage(named: "drop_full")
            droplet[6].image = UIImage(named: "drop_full")
        case 86...92:
            droplet[0].image = UIImage(named: "drop_full")
            droplet[1].image = UIImage(named: "drop_full")
            droplet[2].image = UIImage(named: "drop_full")
            droplet[3].image = UIImage(named: "drop_full")
            droplet[4].image = UIImage(named: "drop_full")
            droplet[5].image = UIImage(named: "drop_full")
            droplet[6].image = UIImage(named: "drop_full")
            droplet[7].image = UIImage(named: "drop_half")
        case 93...100:
            droplet[0].image = UIImage(named: "drop_full")
            droplet[1].image = UIImage(named: "drop_full")
            droplet[2].image = UIImage(named: "drop_full")
            droplet[3].image = UIImage(named: "drop_full")
            droplet[4].image = UIImage(named: "drop_full")
            droplet[5].image = UIImage(named: "drop_full")
            droplet[6].image = UIImage(named: "drop_full")
            droplet[7].image = UIImage(named: "drop_full")
        default:
            print("Error")
        }

如果你计算一下你拥有的水量可以填充多少水滴,你会做得更好。我不精通swift所以我会用“伪语言”来写它,但我想你会明白的。

假设填充每个液滴 (100 / 8) 需要 12.5%。

float renderDroplets(int waterAmounnt) {
    int numOfDroplets = int(waterAmount / 12.5)
    renderFullDroplets(numOfDroplets)

    float remainingWater = int(waterAmount % 12.5)
    if (remainingWater >= 6.5) {
        renderHalfDroplet();
    } else {
        renderEmptyDroplet();
    }
}

希望对您有所帮助。