Добавление нескольких UIImages в UIStackView с тем же именем - PullRequest
0 голосов
/ 09 января 2020

Я пытаюсь добавить изображения в представление стека на основе значения переменной 'num'. Каждое нечетное изображение должно быть изображением «девочка» и даже изображением «мальчик», оба из которых находятся в моей папке активов. Прямо сейчас функция updateSilhouetteView () вызывается ViewDidLoad. Все отлично работает при num <3, но перестает добавлять их, когда уже есть одно изображение. Есть ли у swift проблемы с изображениями с таким же названием? Как я могу обойти это? </p>

@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])
    }
}

1 Ответ

0 голосов
/ 09 января 2020

Это должно создать новый объект для каждого 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])
    }
}
...