Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 使用ScrollViewDidScroll动态调整UIStackView项目的大小时,ScrollViewDidScroll中的延迟_Iphone_Uiscrollview_Autolayout_Lag_Uistackview - Fatal编程技术网

Iphone 使用ScrollViewDidScroll动态调整UIStackView项目的大小时,ScrollViewDidScroll中的延迟

Iphone 使用ScrollViewDidScroll动态调整UIStackView项目的大小时,ScrollViewDidScroll中的延迟,iphone,uiscrollview,autolayout,lag,uistackview,Iphone,Uiscrollview,Autolayout,Lag,Uistackview,在我开始之前,请不要拍摄messenger-这是客户端所需的功能,因此在这种情况下,关于UX的更高级别的对错的讨论可能不会有多大帮助 无论如何,我的困境如下。我有一个包含许多项的垂直视图,每个项都有自己的子视图集合 此垂直UIStackView中的顶部项包含一个水平分页的UIScrollView,在该视图上添加了一个水平UIStackView,其中包含许多不同高度的项 现在,由于水平UIStackView包含不同高度的项目,当其包含的UIScrollView向左和向右滚动时,从而将新项目带到屏幕

在我开始之前,请不要拍摄messenger-这是客户端所需的功能,因此在这种情况下,关于UX的更高级别的对错的讨论可能不会有多大帮助

无论如何,我的困境如下。我有一个包含许多项的垂直视图,每个项都有自己的子视图集合

此垂直UIStackView中的顶部项包含一个水平分页的UIScrollView,在该视图上添加了一个水平UIStackView,其中包含许多不同高度的项

现在,由于水平UIStackView包含不同高度的项目,当其包含的UIScrollView向左和向右滚动时,从而将新项目带到屏幕上(并将以前的项目滑出),UIStackView和父UIScrollView的高度NSLayoutConstraint需要更改以适应。这可确保此顶部项目下的所有垂直视图项目在需要时自动滑出(并备份)

动态调整大小都是在顶部项的UIScrollView的scrollViewDidScroll中完成的

信不信由你,这一切实际上都是可行的,只有一个问题:当需要调整大小时,我会得到UIScrollView滞后。如果不需要调整大小,我不需要

现在从证据来看,在调整大小时,autolayout、UIStackViews和scrollViewDidScroll似乎不能很好地配合使用,我还认为这与垂直UIStackView有关,它为scrollViewDidScroll的每一帧调用其所有子项上的LayoutSubView,这实际上改变了顶部项目的高度。如果除去包含UIScrollView+水平UIStackView的顶部项目之外的所有UIStackView项目,则在调整大小时滚动是无缝的。此外,如果我将调整大小放在scrollViewDidScroll中的动画块中,该动画块只调用一次,它同样是无缝的


所以问题是,有没有人在过去遇到过类似的事情并找到了解决办法?我有什么遗漏吗?有人知道在这个例子中UIStackView layoutSubviews调用是否可以被阻止或阻止吗?我们非常欢迎您的想法,因为取消autolayout和UIStackView的使用可能会产生一些大而昂贵的后果。

请在@Afox共享一些代码请在@Afox共享一些代码