tl; dr我不想在UIScrollView's
内容窗口的顶部上方增加UIViews
的大小,以将内容向下推动。如何在增加内容大小时防止内容偏移
我有一个UIScrollView
显示的许多UIStackViews
列表,的UIStackViews
的好处之一是,当你设置isHidden = false
其子视图之一,它会自动调整以补偿新观点。现在
,每个项目都有这些UIStackViews
之一,用户可以按下一个按钮,它将isHidden = false
到子视图中的每一个,一下子。这意味着,每个列表项将增加一个等于未隐藏视图高度的量(每个堆栈视图的高度相同)。
如果滚动视图的contentOffset
为零,则没有任何问题,因为所有增加的高度都会向下推动所有其余内容,并且在所有视图都未隐藏后,用户仍然位于滚动视图的顶部。
问题是当用户不在滚动视图的顶部。当这种情况出现时,用户按下取消隐藏所有视图的按钮,高度增加将向下推动所有视图,从而呈现向上滚动的外观。用户进一步向下滚动到列表中,其上方的视图越多,并且用户按下按钮时的内容移位越大。
我正在查找的行为与用户在滚动到视图顶部时按下按钮时的行为相同,但在任何滚动位置都是如此。换句话说:无论用户在哪里滚动,当他们按下按钮时,只有下推的视图才是滚动视图内容窗口顶部的视图。
任何想法如何做到这一点?
确切地说。然而,这一切都发生在for循环中,因此在每次迭代中,新视图都将被隐藏。这意味着在每次迭代中,我将不得不滚动到新的位置,除非我能以某种方式保证这一切发生在相同的布局传递中,对吗?如果它不全都发生在同一布局阶段,那么我如何保证用户在每次滚动到新位置时都看不到滚动视图。我希望从用户的角度来看,没有滚动的证据。 – shoe