最後のビューに要素(スクロールビュー内にある)を追加した後、スクロールビューの高さが変更されないため、コンテンツの一番下までスクロールできません
私が行った手順:
したがって、次のようになります。
この後、最後のビューに手動でラベルを追加します。
class SecondViewController: UIViewController {
@IBOutlet weak var testView: UIView!
override func viewDidLoad() {
super.viewDidLoad()
var yPos = 20
for i in 0...20 {
let testLabel = UILabel(frame: CGRect(x: 0, y: yPos, width: 200, height: 20))
testLabel.text = "test \(i)"
testLabel.font = UIFont(name: "Arial", size: 11)
testView.addSubview(testLabel)
yPos += 20
}
}
}
ご覧のとおり、ラベル1〜9しか表示されませんが、下にスクロールできないため、残りは表示されません。
自動レイアウトとプログラムで追加されたラベルをビューに混在させるので問題がありますか?この問題を解決するにはどうすればよいですか?
最後の質問/ポイントは正しいです。ストーリーボードで自動レイアウトを使用している場合は、自動レイアウトを使用する必要があります。
幸い、UIStackView
自動レイアウトでうまく機能するので、黄色のビューをに変更UIStackView
し、コードでそのビューへのアウトレットを作成すると、ビューを追加するだけで済みます。
stackView.addArrangedSubview(sensorLabel)
自動レイアウトを更新せずにスクロールできない理由の簡単な説明:
黄色のビューはその中にあるラベルに固定され、黄色のビューの下部もストーリーボードのスクロールビューの下部に固定されます。
黄色のビューのサイズを大きくしない限り(黄色のビューの下部が固定されているラベルを変更することによって)、スクロールビューのコンテンツのサイズも、黄色のビューの下部に固定されているため変更されません。スタックビューがこの作業のほとんどを実行するため、スタックビューの下部をストーリーボードのスクロールビューの下部に固定する必要があります。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加