我打算实现一个类似于iphone相册的组件..我猜使用uviews会让组件表现不佳,我的意思是滚动速度慢而且所有的东西......所以我应该采用哪种方式采取? CALayer在性能方面比UIViews好吗?还有其他(更轻)的方式 在不使用UIView子类的情况下绘制图像或文本?
任何链接或想法都会很棒,
谢谢!
答案 0 :(得分:2)
有很多关于图形的教程以及UIView与绘图的优缺点。我不是专家,但我怀疑性能更可能来自你的实例化和缓存策略。即如果你想快速滚动然后看看最小化实例化的对象数量,缓存和重用那些是有效的块加载例程来加载数据将产生很大的好处。
但我倾向于首先做一个简单的概念证明应用程序,将其加载到设备上,看看它有多快,以及你最有可能需要解决的性能问题。除了标准设计策略(如缓存和重用组件)之外,在确定性能瓶颈发生位置之前尝试优化性能通常不是一个好主意。
答案 1 :(得分:0)
如果你只是重新发明一个现有的系统实现,首先要使用系统的实现,并从那一点看看具体问题是什么。
如果你有一些非常专业或不易用UIView实现的东西,请查看CoreGraphics.framework和CoreText.framework。
高级库中的大部分绘图和动画都使用CoreGraphics技术。但是,它们通常是简化的或更高级别,并且可能包含特定的抽象成本。 cg渲染不适合新手 - 如果你不了解UIKit / AppKit渲染,你可能会失去很多时间学习它,并且它不一定是对UIKit / AppKit实现的改进。如果您对UIView / NSView和图形非常熟悉,那么您的自定义绘图可以获得很多好处。
(我假设你没有使用它进入OpenGL层)
“猜测使用uiviews会使组件表现不佳”可能不是一个好主意。如果实施已经存在,请相信Apple花了一些时间来优化它 - 您将有一些时间进行投资,并且在开发针对您的需求的改进过程中获得潜在的知识。我建议你从你已经熟悉的东西开始,然后确定它是否需要改进 - 你甚至可以在UIView / NSView中使用CG渲染,所以你不一定需要重新创建UIView的替代品。既然你没有在OP中提到CoreGraphics,我猜你不是很熟悉它。
祝你好运