我在main.storyboard上创建了StackView,我的想法是添加一些常量尺寸40x40的按钮,上面有图像(原来是400x400px,但是它们应该按比例缩小以填充40x40)并且它们应该像这样堆叠: (堆栈视图是看不见的,但我在图片上标记为红色,它在动物所在的右上方170x50空间)
所以简而言之:所有按钮(带有动物图片)应该是相同尺寸的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,然后通过调用:
添加到我的StackViewcell.iconStackView.addArrangedSubview(setupIcon(iconNumber: pett.pic))
在我的StackView设置上我有:
轴:水平
对齐:中心
分布:等间距
内容模式:左
语义:未指定
但是这给了我这些按钮的这种行为:
正如您所看到的,有几个问题:
1)当只有一个按钮存在时,我添加的约束不再起作用
2)我无法弄清楚我应该如何设置我的StackView设置以使它们彼此靠近并向右移动,剩下的空间留在左边空白
你可以帮我解决一下这些按钮的效果吗? 感谢。
注意:每个单元格都带有这些数字" 13:00"等具有不同数量的按钮。我的目标是让所有动物都在右边,无论是1还是3-4。图像不应像狗一样伸展,或者像第二排或第三排中的那些那样间隔