许多 UIViews + QLViewController = 性能非常慢
Posted
技术标签:
【中文标题】许多 UIViews + QLViewController = 性能非常慢【英文标题】:Many UIViews + QLViewController = very slow performance 【发布时间】:2013-12-16 22:32:45 【问题描述】:我正在构建一个日历控件。尽管使用了 数百 个 UIView(示例图像中的每个单元格都是一个 UIView),但它通常运行良好且响应迅速。
http://i.stack.imgur.com/6g1hQ.png
我遇到了将日历放入应用程序的问题。它被其他一些控件完全遮挡,最后被 Quick Look 视图控制器遮挡。 快速查看关闭后应用需要很长时间(10 秒)才会出现响应。
Quick Look 以外的任何视图都没有缓慢症状任何帮助将不胜感激。
【问题讨论】:
介意分享一些代码吗? 你是在使用 UICollectionView 还是某种单元重用架构来在滚动这个怪物时保持低内存占用? 抱歉耽搁了,我猜 SOF 没有给我发送通知。 我认为我无法向您展示任何有用的代码。日历是用一个相当复杂的抽象层创建的,这使得 UI 平台无关。日历没有使用单元重用架构,因为大约 50% 的单元在任何给定时间都是可见的。我已经尝试将控件的数量限制为仅可见的控件,虽然它确实使延迟更短,但这不是解决方案;也就是说,它可以稍后作为优化来完成,但不是问题的主要贡献者。 【参考方案1】:问题在于自动布局。它根本无法处理超过试验数量的视图。每个嵌套视图都会以指数方式影响渲染时间。
我最终编写了自己的“MagicLayout”系统来完成同样的工作,但它需要大约 500 毫秒而不是 10000 毫秒。关闭 ViewController 的时间从 10 秒变为大约 10 毫秒
即将登陆您附近的 Xamarin 组件商店。
【讨论】:
以上是关于许多 UIViews + QLViewController = 性能非常慢的主要内容,如果未能解决你的问题,请参考以下文章