tl; dr コンテンツウィンドウの上部にあるUIViews
のサイズを大きくして、下にコンテンツを押し下げたくありません。コンテンツサイズを大きくするとコンテンツのオフセットを防ぐ方法
私は多くのUIStackViews
のリストが表示されUIScrollView
を持っている、とUIStackViews
の利点の一つは、あなたがそのサブビューのいずれかにisHidden = false
を設定すると、それは新しいビューを補うために自動的にリサイズすることです。
は今、各リスト項目は、これらのUIStackViews
の1つを有し、そしてユーザーが一斉に、それぞれ1でサブビューにisHidden = false
をセットし、ボタンを押すことができます。つまり、各リストアイテムは、非表示ビューの高さに等しい量だけ増加します(スタックビューごとに同じ高さ)。
スクロールビューのcontentOffset
がゼロの場合は問題ありません。すべての高さが増加するとコンテンツの残りの部分がすべて下方に押し出され、すべてのビューが表示されなくてもスクロールビューの一番上に表示されます。
問題は、ユーザーがスクロールビューの先頭にない場合です。この場合、ユーザーがすべてのビューを非表示にするボタンを押すと、高さが増加するとすべてのビューが下方向に押し出され、上方向にスクロールして表示されます。ユーザーがリスト内をスクロールすると、その上に表示されるビューが増え、ユーザーがボタンを押したときのコンテンツのシフトが大きくなります。
私が探している動作は、ビューの上部にスクロールされているときにユーザーがボタンを押したときと同じですが、スクロール位置は同じです。言い換えれば、ユーザーがどこにスクロールされているかにかかわらず、ボタンを押すと、スクロールビューのコンテンツウィンドウの一番下のものだけがプッシュダウンされます。
どのようにすればよいでしょうか?
です。しかし、これはすべてforループで起こるので、各反復で新しいビューは表示されません。これは、各繰り返しで、私は何とかこれがすべて同じレイアウトパスで起こることを保証できない限り、新しい位置にスクロールする必要があることを意味します。同じレイアウトパスですべてが発生しない場合は、毎回新しい位置にスクロールしながらスクロールビューが表示されないようにするにはどうすればよいでしょうか。ユーザーの視点からスクロールが発生するという証拠はありません。 – shoe