UIScrollView 中的嵌套 UIStackView 滞后

Nested UIStackViews in UIScrollView Lag

提问人:Nikesh Shakya 提问时间:5/15/2020 最后编辑:CommunityNikesh Shakya 更新时间:5/15/2020 访问量:272

问:

我有一个以 scrollview 为父视图的视图。在 Scrollview 中,有一个嵌套到许多子堆栈视图(全部垂直)的父堆栈视图。视图有点笨重,有很多元素。根据某些特征,特定堆栈视图中的某些子视图设置为隐藏/取消隐藏。

问题是当我尝试推送此视图控制器时,加载需要 3-5 秒的延迟。我敢肯定,除了加载UI组件之外,没有任何其他任务阻塞。谁能帮助解决这种滞后? 或者我是否必须以编程方式将排列的子视图添加到堆栈视图?

附图是我的视图层次结构 查看图片

iOS Swift iPhone UIscrollView UISackView

评论

0赞 udbhateja 5/15/2020
滚动视图会滞后,请尝试使用 UITableView 或 UICollectionView 来优化性能并消除滞后。
0赞 DonMag 5/15/2020
您需要提供更多详细信息。假设您显示的图像是您在 Storyboard 中的布局...您是否正在“填充”堆栈视图?或者只是设置在需要的地方?如果您只是推送到该视图控制器(从 中删除所有子视图的添加,您仍然看到滞后吗?如果没有,那么您需要评估您正在执行的加载/添加子视图的所有操作。viewDidLoad().isHiddenviewDidLoad()
0赞 Nikesh Shakya 5/17/2020
@DonMag在didLoad中,我只是使用viewModel初始化组件。此初始化将隐藏堆栈视图中不属于当前状态的元素。就是这样。我尝试将初始化函数移动到 viewDidAppear() 并推送视图控制器很快,但是一旦显示视图,就会有一个滞后,会将视图冻结相同的几秒钟。
0赞 DonMag 5/17/2020
“......我只是用 viewModel 初始化组件。此初始化将隐藏堆栈视图中不属于当前状态的元素。就是这样......“ 好的 - 如果你只设置了需要隐藏的 UI 元素,你需要评估你是如何确定的。我只是把它放在一起作为一个测试:i.stack.imgur.com/RwQsX.png......每次点击顶部的按钮时,我都会遍历所有 52 个排列的子视图并随机设置属性。在 iPhone 7(设备)上,更新屏幕平均需要大约几秒钟。.isHidden.isHidden0.003
0赞 Nikesh Shakya 5/18/2020
@DonMag即使在注释了更改元素可见性的代码之后,滞后仍然存在。可能的原因是什么?您推荐什么解决方案。是因为我使用了过多的stackView吗?

答: 暂无答案