アプリケーションのUIの一部をSwiftで作成していますが、直面している問題は、3つのサブビュー(2つのUILabelとUIImageView)を持つUIStackView
があることです。私の最初のコード
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
はそれを無料で使用しています。 2番目のUILabel
に使用可能なスペースを使用させるにはどうすればよいですか?
各ラベル/スイッチの水平方向のcontentHuggingPriority
とcontentCompressionResistance
を他のラベルとは異なるものに設定して、残りの使用可能なスペースを埋めるために拡張するもののハグ値が最小になるようにする必要がある場合があります。 。