将多个 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])
}
}
我正在尝试根据变量 '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])
}
}