我正在使用 Swift 创建我的应用程序 UI 的一部分,我面临的问题是我有一个带有 3 个 subview 的 UIStackView: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 结果如下 enter image description here

还有剩余空间,但第一个 UILabel 没有使用它。如何强制第二个 UILabel 使用可用空间?

请您参考如下方法:

优先考虑第二个标签(行数不受限制的标签)的设置是将堆栈 View 设置为“按比例填充”分布(这意味着 View 的大小基于它们的内在大小和拥抱/抵抗优先级)

enter image description here

结合水平“Content Compression Resistance Priority1000('required')用于左侧标签和开关(这意味着'不压缩')

enter image description here

解析为:

enter image description here


评论关闭
IT虾米网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!

ios之两个 UIBezierPaths 交集作为一个 UIBezierPath