Я создал StackView на main.storyboard, и моя идея состояла в том, чтобы добавить несколько кнопок с постоянным размером 40x40 с изображениями на них (которые первоначально 400x400px, но они должны масштабироваться, чтобы заполнить этот 40x40), и они должны складывают так: (вид стека невидим, но я пометил его красным на рис, его 170x50 пространство в правом верхнем углу, где животные находятся)Добавляя кнопки (с постоянной шириной) программно в UIStackView
так коротко: все кнопки (с изображениями животных) должны быть одинакового размера 40x40 и заполняться влево (или вправо) с некоторым интервалом, равным 2px между Эм.
В коде я написал:
func setupIcon(iconNumber:Int) -> UIButton{
myImageButton = UIButton()
myImageButton.frame = CGRect(x: 0, y: 0, width: 40, height: 40)
myImageButton.addTarget(self, action: #selector(self.pressed), for: .touchUpInside)
myImageButton.isUserInteractionEnabled = false
//myImageButton.backgroundColor = UIColor.gray
let widthConstraint = NSLayoutConstraint(item: myImageButton, attribute: NSLayoutAttribute.width, relatedBy: NSLayoutRelation.equal, toItem: nil, attribute: NSLayoutAttribute.notAnAttribute, multiplier: 1, constant: 40)
let heightConstraint = NSLayoutConstraint(item: myImageButton, attribute: NSLayoutAttribute.height, relatedBy: NSLayoutRelation.equal, toItem: nil, attribute: NSLayoutAttribute.notAnAttribute, multiplier: 1, constant: 40)
NSLayoutConstraint.activate([widthConstraint, heightConstraint])
switch(iconNumber){
case 0:
myImageButton.setImage(UIImage(named: "hamster")!, for: .normal)
return myImageButton
case 1:
myImageButton.setImage(UIImage(named: "dog")!, for: .normal)
return myImageButton
...
default:
myImageButton.setImage(UIImage(named: "hamster")!, for: .normal)
return myImageButton
}
}
вернуть UIButton который я затем добавить к моему StackView по телефону:
cell.iconStackView.addArrangedSubview(setupIcon(iconNumber: pett.pic))
и мои настройки StackView у меня есть:
Axis: Горизонтально
Выравнивание: Центр
Распределение: равноотстояния
Режим Содержание: Left
Семантический: Неизвестно
, но это дает мне такое поведение этих кнопок:
и, как вы видите, есть несколько проблем:
1) ограничения, которые я добавил, больше не работают, когда есть только одна кнопка
2) Я не могу понять, что я должен установить для своих настроек StackView, чтобы они все сближались друг с другом и направо с остальной частью пространства влево пустой
Вы можете помочь мне в том, что делать, чтобы добиться желаемого эффекта на этих кнопках? Спасибо.
примечание: каждая ячейка с этими цифрами «13:00» и т. Д. Имеет различное количество кнопок. Моя цель - иметь всех животных справа, независимо от того, 1 или 3-4. Изображения не должны растягиваться, как собака, или располагаться на расстоянии 2 во втором или третьем ряду.
Но эти кнопки добавляются в код. Как добавить ограничения для динамического содержимого. Точно, если бы я хотел добавить новую иконку (рыбу) в эту 3, как добавить ограничения от Fish на Chameleon? – NikolaM
Просто добавьте их. В чем проблема? – matt