Iphone 全面的UIScrollView性能

Iphone 全面的UIScrollView性能,iphone,performance,ios,uiscrollview,calayer,Iphone,Performance,Ios,Uiscrollview,Calayer,这在iPhone 4和3GS上运行良好: scrollView.layer.cornerRadius = 11; scrollView.layer.masksToBounds = YES; 但在iPhone3G和iPodtouch第二代手机上,它让滚动变得非常不稳定。我知道有一些技巧可以提高CALayer的性能,例如放置阴影(将shouldRasterize设置为YES,并使用shadowPath属性),是否可以对CALayer的cornerRadius执行类似操作?CALayers的渲染对于

这在iPhone 4和3GS上运行良好:

scrollView.layer.cornerRadius = 11;
scrollView.layer.masksToBounds = YES;

但在iPhone3G和iPodtouch第二代手机上,它让滚动变得非常不稳定。我知道有一些技巧可以提高
CALayer
的性能,例如放置阴影(将
shouldRasterize
设置为YES,并使用
shadowPath
属性),是否可以对CALayer的cornerRadius执行类似操作?

CALayers的渲染对于这种使用来说太慢了(尤其是在较旧的设备上),在游戏等中使用它不是很好。您可以切换到UIImages或cocos2d sprites,另一个选项是使用OpenGL创建自己的图层类,尽管这一选项并不简单。希望这些选项中的一个对您有用。

是滚动视图后面的内容(圆角下显示的是什么)纯色还是其他静态?如果是这样,您应该能够通过在“角”图形的中心覆盖半透明和不透明(使用背景色或其他颜色)来获得更好的性能在滚动视图角落顶部的边缘。在内容上合成四个11x11图像的成本将大大低于剪辑成本。

hmm。我的理解是CGlayer是在GPU上渲染的。这可能是您的问题的根源。您是否建议任何解决方法?我很清楚,较旧的设备我的GPU速度要慢得多。除了使用CPU,难道没有办法获得相同的结果吗?我认为问题在于,它是使用CPU而不是GPU来渲染圆角。据我所知,在旧设备上获得快速圆角的唯一方法是避免
cornerRadius
,而是在
drawRect:
或绘制成
UIImage
。我很好奇,您是否尝试过使视图不透明?不确定这是否是您的选择,但值得一读,正如我在问题的评论中所说,我在滚动视图后面的内容不仅是图像,而且是动态的。因此,每次备份时,我都必须在运行时生成4个圆角图像圆形图像已更改。是否有办法使用CGContextClip()使用CoreGraphics进行更改?抱歉,我没有阅读所有的评论。据我所知,CALayers已经使用核心图形剪辑来渲染他们的角。您可能需要在运行时生成四个角图像,可能需要使用superlayer的
-renderContext:
方法,然后从中剪切片段。