在不重复太多代码的情况下根据数字将 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();
}
}
希望对您有所帮助。
我有一个 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();
}
}
希望对您有所帮助。