我正在开发一款iPhone应用程序,该应用程序将显示大型可滚动和可缩放的表面,其上包含图片和文本标签网格。我需要能够单独更改图片的位置并控制标签的不透明度。我尝试使用UIScrollView
和核心动画来实现这些目标。
UIScrollView
的子视图包含两个主要子图层:一个用于显示图片,另一个用于标签。图片为CALayers
,其内容属性设置为CGImage
,并将它们作为子图层添加到图片图层。标签为CATextLayers
,它们是第二层的子图层。标签图层的透明度会根据滚动视图的缩放比例而变化。
这就是问题:当标签完全不透明或完全透明时,一切正常,但是当它们是半透明的时,滚动开始变得粗糙,FPS下降到大约35。显然混合这些图层减慢了一切,但我找不到解决方法。 我将非常感谢有关如何在这种情况下提高性能的任何想法。也许有更好的方法来绘制文字标签而不是使用 CATextLayer
?
答案 0 :(得分:0)
您是否可以将UIScrollView的两个“主要图层”合并为一个?此外,您是否可以直接将图层添加到UIScrollView的图层而不是添加其他图层?
我发现通过减少为了包含其他图层而存在的图层数量,我获得了巨大的性能提升。
答案 1 :(得分:-1)
一种解决方案是为图像层和文本图层的大多数背景图层添加阴影。
您可以调整大量的阴影属性,例如shadowPath
,shadowColor
,shadowOffset
和shadowRadius
- 设置每个属性,不要错过任何属性。同时设置yourlayer.masksToBounds = NO
。
不要忘记添加yourlayer.shouldRasterize = YES
,因为这会对性能产生更好的影响。