グリッドを作成するためにビューのネストされたスタックビューを持つスタックビューを作成しようとしています。グリッド内のすべてのセルにはラベルが必要です。私が持っている問題は、ラベルのみthis screenshotのように非常に最初のビューに表示されていることである。UILabelがスーパービューに常に表示されるとは限りません
for _ in 1...5 {
let view = WeekView()
addArrangedSubview(view)
}
そして、これは、ネストされたスタックビューのコードです:
私のメインスタックビューのコードは簡単です。
// Function called in init(frame:)
func configureView() {
spacing = 8
for _ in 1...7 {
let view = UIView()
let label = UILabel()
view.addSubview(label)
addArrangedSubview(view)
label.text = "hi"
label.textAlignment = .center
view.widthAnchor.constraint(equalToConstant: 40).isActive = true
view.translatesAutoresizingMaskIntoConstraints = false
label.heightAnchor.constraint(equalTo: view.heightAnchor).isActive = true
label.widthAnchor.constraint(equalTo: view.widthAnchor).isActive = true
label.translatesAutoresizingMaskIntoConstraints = false
}
}
どのような示唆も多くの賛同があります。
あなたは、ラベルのためだけにその幅と高さを位置を設定されていません。 – Sulthan
提案してくれてありがとうございましたが、あなたがビューを動かすと、そのサブビューもすべて一緒に動くと思っていましたが、それは本当ですか?しかし、私は 'label.frame.origin = view.frame.origin'を呼び出そうとしましたが、助けにはなりませんでした。 – bohdankoshyrets
あなたの自動サイズ変更マスクが使用されていないので、 'frame'を使って位置を設定することはできません。ラベルごとにXとYの位置に制約を追加する必要があります。それ以外の場合、位置はランダムになります。 – Sulthan