曾经尝试各种方法优化滚动视图的性能,都没什么好的效果。
今天在官方文档的 tableView 一章节找到些内容。
大致内容是:
- 减少cell 的 subview 。
- 使用 drawInRect 替代
- 避免使用透明效果
具体效果如何,测试中。
原文如下
-
Draw the entire cell only when appropriate
. Your subclass of UITableViewCell could draw all of its content in its drawRect: method, but you should be aware of the potential drawbacks of this approach. Custom drawing applies to the cell’s layer, which can be obscured by any views placed over it. For example, in table views in the grouped style, the background view (the backgroundView property) obscures any drawing performed in drawRect:. The blue selection background will also obscure any drawing. Moreover, custom drawing that occurs during animation (such as when the table view enters and exits editing mode) drastically decreases performance.
-
An alternative is a subclass that composes the content of the cell from subviews, laying those views out in the desired way. Because those views are cached, they can simply be moved around (when, for instance, the cell goes into editing mode). “Programmatically Adding Subviews to a Cell’s Content View” illustrates one such approach and notes another.
-
However, if the content of a cell is composed of more than three or four subviews, scrolling performance might suffer. In this case (and especially if the cell is not editable), consider drawing directly in one subview of the cell’s content view. The gist of this guideline is that, when implementing custom table-view cells, be aware that there is a tradeoff between optimal scrolling performance and optimal editing or reordering performance.
-
Avoid transparency
. Subviews of table-view cells have a compositing cost that you can largely mitigate by making the views opaque. Even one transparent subview per cell impacts scrolling performance. Always use opaque subviews if at all possible.
-
Mark the cell as needing display when viewable properties change
. If you have a custom reusable table cell and it displays a custom property as part of the cell content, you must be sure to send a setNeedsDisplay message to the cell if the value of the property changes. Otherwise UIKit doesn’t know that the cell is “dirty” and therefore won’t invoke the cell’s drawRect: method to have it redraw itself with the new value. A good place to call setNeedsDisplay is in a (non-synthesized) setter method associated with the property.
分享到:
相关推荐
2. **性能优化**:因为TableView可能需要渲染大量单元格,所以要尽可能减少不必要的绘制,比如使用缓存和复用机制来提高效率。 3. **触摸事件处理**:处理用户的滑动操作,监听ScrollView的滚动事件,以实现相应的...
本项目“ios-scrollView复用及tableView预加载.zip”着重探讨了如何优化滚动视图的性能,特别是针对题库类应用,通过复用机制和预加载策略来提升用户体验。 一、ScrollView复用机制 1. 复用池:在iOS中,...
TableView的优点在于它能自动处理数据加载、缓存和重用机制,极大地优化了性能。而ScrollView则是一个更为通用的滚动视图,可以容纳任意数量和类型的子视图,适合展示非结构化的或需要自定义滚动行为的内容。 在...
在iOS开发中,有时我们需要在一个ScrollView中嵌套一个UITableView,以实现复杂的布局需求。然而,这种嵌套滑动的情况在官方文档中并不推荐,...在实现这样的功能时,代码的调试和优化至关重要,以确保性能和稳定性。
6. **注意性能**:嵌套ScrollView和TableView可能导致性能问题,尤其是当TableView的数据源较大时。因此,确保正确实现`numberOfRows(inSection:)`和`cellForRowAt:`方法,以及使用dequeueReusableCell以复用cell,...
5. **性能优化**: 当嵌套使用时,必须注意性能问题。因为TableView和ScrollView都会有自己的滚动机制,可能会导致冲突。可以使用`isScrollEnabled`属性来控制TableView是否可以滚动,以及在ScrollView滚动时暂停...
总之,`TableView` 和 `ScrollView` 的混合使用可以为Cocos2d-x游戏或应用提供更灵活的界面设计,但同时也需要开发者具备良好的布局管理和性能优化技巧。正确地组合这两个组件,可以创造出丰富多样的用户体验。
7. 性能优化:因为嵌套视图可能会导致性能问题,尤其是当数据量大时,应考虑使用异步加载和复用机制,以减少内存占用和提高滚动流畅度。 总之,这个资源包提供了实现ScrollView与TableView结合的示例代码,对于...
ScrollView优化是提高游戏性能和用户体验的关键环节,尤其是在资源密集型的应用中。下面将详细讨论Cocos2d-x中ScrollView的优化策略和技巧。 一、内容缓存与批处理 1.1 使用SpriteBatchNode:当ScrollView内包含...
综上所述,"ios-scrollView上面三个tableView重用.zip"这个示例可能是为了演示如何在`UIScrollView`中高效地管理多个`UITableView`,利用它们各自的重用机制,同时处理好数据源、代理、滚动同步和性能优化等细节问题...
通过以上步骤,我们能够实现在横向滚动时利用TableView的Cell复用机制,优化性能,同时保持用户界面的流畅。然而,这种方法比标准的UITableView使用更复杂,需要仔细考虑布局和滚动同步,因此在实际项目中应权衡复杂...
同时,注意性能优化,避免在 ScrollView 中加载大量大型图片或其他资源,因为这可能导致应用运行缓慢。 总之,理解并熟练使用 Titanium 的 ScrollView 对于构建动态、可扩展的应用至关重要。通过调整各种属性和监听...
ScrollView比官方例子优化更好!!!ScrollView是比较常用的UI组件之一,游戏中的任务榜、排行榜都少不了它,实际使用中存在一个问题,例如:在排行榜中要显示前100名玩家,如果真的把这100名玩家的信息全部创建,并...
这个压缩包文件的标题和描述提到了"第三方类,tableview刷新,scrollview,HUD,图片阴影",这些都是iOS开发中的重要知识点。下面将对这些主题进行详细的讲解。 首先,"第三方类"在iOS开发中扮演着至关重要的角色。...
这个组件包含了关键的优化机制,如回收机制、列表复用和缓存策略,以避免内存泄漏和性能问题。 1. **表格视图(TableView)**:TableView是UI设计中常见的一种布局方式,它通常用于显示大量数据,并且可以进行滚动...
描述中提到“自定义scrollview,觉得好用可用下载试试,tableview嵌套scrollview”,这暗示了这个项目可能解决了一个常见问题,即如何在 `UITableView` 中嵌套 `UIScrollView`。在 iOS 开发中,直接将 `UITableView`...
2. 性能优化:在加载大量数据时,使用分页策略以减少内存占用和提高性能。 3. 用户反馈:在加载过程中显示加载指示器,告知用户操作状态。 4. 错误处理:对于网络请求失败或其他异常情况,应有适当的错误提示和处理...
4. **优化WebView的加载**:由于webView加载网页可能会消耗大量资源,我们需要注意性能优化。可以使用`WKWebView`代替`UIWebView`,因为它更现代、更高效。此外,可以使用`WKWebView`的`WKNavigationDelegate`方法...
6. **优化性能**:在处理大量数据时,为了避免一次性加载所有元素导致性能问题,可以使用动态加载和销毁机制。只有在元素进入可视范围时才实例化,离开时销毁。 通过以上步骤,我们可以构建一个高效且流畅的NGUI ...
此外,该项目还可能包含了错误处理、性能优化等方面的细节,这对于提升你的Swift UI开发技能至关重要。 总的来说,这个示例项目旨在让你熟练掌握Swift中Storyboard的使用,以及TableView、ScrollView和...