将多个 UIImage 添加到具有相同名称的 UIStackView

Adding multiple UIImages to a UIStackView with the same name

我正在尝试根据变量 'num' 的值将图像添加到堆栈视图。每个奇怪的图像都应该是一个名为 "girl" 的图像,甚至是一个名为 "boy" 的图像,它们都位于我的资产文件夹中。现在,ViewDidLoad 正在调用 updateSilhouetteView() 函数。 一切都适用于 num < 3,但在每个图像已经存在一个之后它会停止添加它们。 swift 同名图片有问题吗?我该如何解决这个问题?

@IBOutlet weak var silhouetteStack: UIStackView!
let boy = UIImageView(image: UIImage(named: "boy"))
let girl = UIImageView(image: UIImage(named: "girl"))
var silhouettes: [UIImageView] = []
var num = 3
func updateSilhouetteView() {
    for n in 0..<num {
        if n % 2 == 0 {
            silhouettes.append(boy)
            silhouettes[n].image = UIImage(named: "boy")
            print("boy")
        } else {
            silhouettes.append(girl)
            silhouettes[n].image = UIImage(named: "girl")
            print("girl")
        }
        silhouettes[n].frame = CGRect(x: 210, y: 500, width: 205, height: 120)
        silhouettes[n].contentMode = .scaleAspectFit
        silhouetteStack.addArrangedSubview(silhouettes[n])
    }
}

这应该为每个 UIImageView 创建一个新对象并按预期工作。基本上,我正在创建一个新的 UIImageView 实例,然后将它添加到数组中。您一次又一次地添加相同的实例。因此,堆栈视图仅获得对 2 个不同 UIImageView 实例的引用。

@IBOutlet weak var silhouetteStack: UIStackView!
//let boy = UIImageView(image: UIImage(named: "boy"))
//let girl = UIImageView(image: UIImage(named: "girl"))
var silhouettes: [UIImageView] = []
var num = 3

func viewDidLoad() {
    silhouetteStack.distribution = .fillEqually
}

func updateSilhouetteView() {
    for n in 0..<num {
        if n % 2 == 0 {
            silhouettes.append(UIImageView(image: UIImage(named: "boy")))
            //silhouettes[n].image = UIImage(named: "boy")
            print("boy")
        } else {
            silhouettes.append(UIImageView(image: UIImage(named: "girl")))
            //silhouettes[n].image = UIImage(named: "girl")
            print("girl")
        }
        silhouettes[n].frame = CGRect(x: 210, y: 500, width: 205, height: 120)
        silhouettes[n].contentMode = .scaleAspectFit
        silhouetteStack.addArrangedSubview(silhouettes[n])
    }
}