Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone CALayer中的性能滚动和视网膜分辨率图像_Iphone_Ios - Fatal编程技术网

Iphone CALayer中的性能滚动和视网膜分辨率图像

Iphone CALayer中的性能滚动和视网膜分辨率图像,iphone,ios,Iphone,Ios,我有一个在UIScrollView中作为子视图放置的UIView。我在UIView中有几个由图像、文本和按钮组成的子视图。为了获得良好的滚动性能,我在UIView的图层上设置了shouldRasterize=YES。这在性能提高的情况下工作得很好,所以我可以平滑地滚动,并且不会造成问题,因为我的图形在绘制后是静态的。然而,问题是,当我设置shouldRasterize时,光栅化的图形在视网膜显示器上是模糊和低分辨率的。有没有一种方法可以使高分辨率图形光栅化以提高性能?似乎我需要为设备将光栅化比例

我有一个在UIScrollView中作为子视图放置的UIView。我在UIView中有几个由图像、文本和按钮组成的子视图。为了获得良好的滚动性能,我在UIView的图层上设置了
shouldRasterize=YES
。这在性能提高的情况下工作得很好,所以我可以平滑地滚动,并且不会造成问题,因为我的图形在绘制后是静态的。然而,问题是,当我设置shouldRasterize时,光栅化的图形在视网膜显示器上是模糊和低分辨率的。有没有一种方法可以使高分辨率图形光栅化以提高性能?

似乎我需要为设备将光栅化比例设置为适当的值,如下所示

myView.layer.rasterizationScale = [[UIScreen mainScreen] scale];

我有一个类似的问题——一个旋转的
UIView
和几个
UIImageView
子视图。当我设置光栅化比例=2.0时,图像变得更清晰,但这导致锯齿重新出现。为了解决这个问题,我创建了一个
containerView
,其中包含
UIView
UIIMageView
s(以前是UIView的子视图),并将
rasterizationScale=1.0
应用于
UIView
rasterizationScale=2.0
应用于
UIIMageView
s。现在一切看起来都很好。

@Jamie Hamick在Swift 5中的回答:


myView.layer.rasterizationScale=UIScreen.main.scale

我建议使用timeuser建议的更简单的解决方案。父层是否也需要使用相同的光栅化比例,或者这无关紧要?