tl; dr我不想在UIScrollView's
內容窗口的頂部上方增加UIViews
的大小,以將內容向下推動。如何在增加內容大小時防止內容偏移
我有一個UIScrollView
顯示的許多UIStackViews
列表,的UIStackViews
的好處之一是,當你設置isHidden = false
其子視圖之一,它會自動調整以補償新觀點。現在
,每個項目都有這些UIStackViews
之一,用戶可以按下一個按鈕,它將isHidden = false
到子視圖中的每一個,一下子。這意味着,每個列表項將增加一個等於未隱藏視圖高度的量(每個堆棧視圖的高度相同)。
如果滾動視圖的contentOffset
爲零,則沒有任何問題,因爲所有增加的高度都會向下推動所有其餘內容,並且在所有視圖都未隱藏後,用戶仍然位於滾動視圖的頂部。
問題是當用戶不在滾動視圖的頂部。當這種情況出現時,用戶按下取消隱藏所有視圖的按鈕,高度增加將向下推動所有視圖,從而呈現向上滾動的外觀。用戶進一步向下滾動到列表中,其上方的視圖越多,並且用戶按下按鈕時的內容移位越大。
我正在查找的行爲與用戶在滾動到視圖頂部時按下按鈕時的行爲相同,但在任何滾動位置都是如此。換句話說:無論用戶在哪裏滾動,當他們按下按鈕時,只有下推的視圖纔是滾動視圖內容窗口頂部的視圖。
任何想法如何做到這一點?
確切地說。然而,這一切都發生在for循環中,因此在每次迭代中,新視圖都將被隱藏。這意味着在每次迭代中,我將不得不滾動到新的位置,除非我能以某種方式保證這一切發生在相同的佈局傳遞中,對嗎?如果它不全都發生在同一佈局階段,那麼我如何保證用戶在每次滾動到新位置時都看不到滾動視圖。我希望從用戶的角度來看,沒有滾動的證據。 – shoe