我正在使用Swift创建应用程序用户界面的一部分,我面临的问题是我有一个UIStackView
有3个子视图:2个UILabel和一个UIImageView。这是我的第一个代码
let switchview = UISwitch()
let nodelableview = UILabel()
nodelableview.textAlignment = NSTextAlignment.right
nodelableview.numberOfLines = 0
nodelableview.text = nodes[i].type + " " + nodes[i].node_name
let statLabel = UILabel()
statLabel.textAlignment = NSTextAlignment.left
statLabel.text = nodes[i].stat
let stack = UIStackView()
stack.axis = .horizontal
stack.spacing = 16
stack.addArrangedSubview(statLabel)
stack.addArrangedSubview(nodelableview)
stack.addArrangedSubview(switchview)
cell.nodesView.addArrangedSubview(stack)
此代码的问题在于,当nodelabelview
具有长文本时,UIStackView不会扩展以为2行或更多行创建空间。所以我将对齐设置为.center
,这是结果
还剩下空白区域,但第一个UILabel
正在使用它。如何强制第二个UILabel
使用可用空格?
答案 0 :(得分:12)
优先考虑您的第二个标签(具有无限行数的标签)的设置是将stackview设置为“按比例填充”分布(这意味着视图的大小基于他们的内在规模和拥抱/抵抗优先权)
结合左侧标签&的 1000 ('required')的水平“内容压缩阻力优先级”开关(意思是“不压缩”)
解决了这个问题:
答案 1 :(得分:2)
您可能需要将每个标签/开关的水平contentCompressionResistance
和months = {
'Jan' : 1,
'Feb' : 2,
'Mar' : 3,
'Apr' : 4,
'May' : 5,
'Jun' : 6,
'Jul' : 7,
'Aug' : 8,
'Sep' : 9,
'Oct' : 10,
'Nov' : 11,
'Dec' : 12
}
temp = df['issue_d']
temp.split('-')
return temp[1] + '-' + str(months[temp[0]])
设置为与其他标签/开关不同的内容,确保您希望展开以填充剩余可用空间的那个具有最低的拥抱值。