アプリのメインページのスタックビューに追加するUIViewがあります
これは私の見解のクラスです:
class MyCustomView: UIView {
public let leftLabel: UILabel = UILabel(frame: .zero)
public let rightLabel: UILabel = UILabel(frame: .zero)
override init(frame: CGRect) {
super.init(frame: frame)
addSubview(leftLabel)
addSubview(rightLabel)
leftLabel.translatesAutoresizingMaskIntoConstraints = false
rightLabel.translatesAutoresizingMaskIntoConstraints = false
NSLayoutConstraint.activate([
leftLabel.widthAnchor.constraint(equalTo: widthAnchor, multiplier: 0.4),
leftLabel.leadingAnchor.constraint(equalTo: leadingAnchor),
leftLabel.topAnchor.constraint(equalTo: topAnchor),
leftLabel.bottomAnchor.constraint(equalTo: bottomAnchor),
rightLabel.widthAnchor.constraint(equalTo: widthAnchor, multiplier: 0.6),
rightLabel.trailingAnchor.constraint(equalTo: trailingAnchor),
rightLabel.topAnchor.constraint(equalTo: topAnchor),
rightLabel.bottomAnchor.constraint(equalTo: bottomAnchor),
])
leftLabel.text = "Short string"
rightLabel.text = "Short string too"
}
}
そして、メインスタックビューに以下を追加します。
let myCustomView = MyCustomView(frame: .zero)
stackView.addArrangedSubview(myCustomView)
これにより、ラベルが正しく読み込まれ、必要に応じてすべてのサイズが変更されます。
ただし、メインクラスでは、
myCustomView.rightLabel.text = <New Way Longer Text That Takes 2 Lines Instead of One>
を更新しています
テキストは正しく更新されていますが、私の
myCustomView
サイズはサイズ変更されていないため、テキストの一部が切り取られています
私はここで他の答えを試しましたが、それらのどれも私にとってはうまくいかないようです。
customViewのサイズを変更してその中にラベルを収めるために、何か小さなものがありませんか?
前もって感謝します
回答 1 件
関連した質問
- コアグラフィックスでヒット検出を行う方法
- キーボード入力用のシンプルなUIToolarを使用したレイアウト制約エラーAccessoryView
- iOS ViewのMVCデザインはモデルと話します:迅速:プログラムで
- UIGesturerecognizerはUIViewで動作していません
- ユーザーが上下にスワイプするとそれを知る方法は?
- コンテナの割合が速い4
- ボタンアクションでUIViewからUIViewcontrollerに移動する方法
- カスタムビューのIBOutletはnilです
- プログラムでアラートコントローラーのインジケータービューを中央に配置する
- awakeFromNibでUIView animate withDurationを呼び出してもアニメーションは実行されません
コードに
.numberOfLines
を設定したことが表示されない ラベル内の0
複数行のラベルを許可します。それだけを追加すると、ラベルの高さが増し、カスタムビューが拡大できるようになります。ただし...これにより、両方のラベルが最も高いラベルのサイズに拡張され、「短い」ラベルのテキストが垂直方向の中央に配置されます(ビューのフレーム/境界を見やすくするために背景色を追加しました):
カスタムビューの下部を
greaterThanOrEqualTo
の各ラベルの下部に制限する場合 ラベルを「上揃え」に保つことができます。Playgroundページでこのコードを直接実行して、結果を確認できます。