问题标签 [catiledlayer]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
2785 浏览

iphone - 在没有 CATiledLayer 的 iOS 上呈现和缩放大图像

我想展示并允许用户在 iPhone 和 iPad 上缩放大图像,就像照片应用程序的工作方式一样。

我意识到 CATiledLayer 是这个的 goto 类,但它使用的美学不适用于我的应用程序。它一个接一个地渲染图块,而照片应用程序一次渲染整个屏幕(并在缩放期间和之后显示像素化版本,直到应用程序可以赶上)。

我当然可以实现一个在每次缩放后在背景中呈现图像的视图。但是,一旦源图像变大,这将使应用程序崩溃。所以平铺很吸引人,我宁愿在所有平铺都准备好之前不更新屏幕(同时显示较低分辨率的图像)。

有没有人试图实现这样的东西?有任何想法吗?

0 投票
3 回答
1098 浏览

objective-c - 在 UIScrollView 中拍摄 CATiledLayer 支持的视图的图像快照

我有一个自定义地图视图,它由UIScrollView. 滚动视图的子视图由CATiledLayer. 在这里一切都很好。平移和缩放会加载新的地图图块,一切都运行良好。

我想要做的是捕捉动画视频帧到这个滚动视图。本质上,我想为滚动视图contentOffsetzoomScale.

我知道这个概念是合理的,因为我可以获得私有 API 函数UIGetScreenImage()来以 10 fps 的速度捕获应用程序的屏幕,组合这些图像,并且我可以获得平滑的播放动画并且具有滚动视图动画使用的时序曲线。

当然,我的问题是我不能使用私有 API。仔细阅读 Apple在这里列出的替代方案,给我留下了一个几乎可以说是有效的选择:询问并CALayer从中获取。renderInContextUIGraphicsGetImageFromCurrentImageContext()

不过,这似乎不适用于支持的CATiledLayer视图。捕获的是块状、未缩放的图像,就好像从未加载过更高分辨率的图块一样。这在一定程度上是有道理的,因为CATiledLayer为了性能而引入后台线程并且renderInContext从主线程调用可能无法捕获这些更新。即使我也渲染了平铺层,结果也是相似的presentationLayer

CATiledLayer在包含滚动视图的动画过程中,是否有苹果认可的方法来捕获支持视图的图像?或者在任何时候,就此而言?

0 投票
1 回答
719 浏览

ipad - levelOfDetail 和 levelsOfDetailBias 的值在 ios 中的 CATiledLayer 上呈现 pdf

我正在开发一个项目,我在 CATiledLayers 上渲染 PDF。我使用 CGPdf 类方法渲染 pdf 并且也成功了。

我想知道用于levelsOfDetaillevelsOfDetailBias的值,以避免在正常模式或缩放模式下出现任何内存问题。现在我正在设置如下值。

tiledLayer1.levelsOfDetail = 1; tiledLayer1.levelsOfDetailBias = 30;

我是否使用了适当的值,内存是否受到这些值的影响?

我有这个疑问,因为我在缩放页面时遇到内存问题。我确保没有内存泄漏并且代码被有效地编写。

我的 zoomScale 范围在 1.0 到 2.0 之间。谁能帮我避免内存问题……以及用于上述参数的值。

提前致谢...

0 投票
1 回答
534 浏览

ios - CATiledLayer、CALayerDelegate 和捕获触摸事件

我将如何在 CATiledLayer 上捕获触摸事件?

我有以下情况,如果我将视图层更改为 CATiledLayer,视图将停止捕获 TouchesXXX 事件。为什么会发生这种情况,我应该如何解决这个问题。

0 投票
1 回答
473 浏览

iphone - Intermittent EXC_BAD_ACCESS exception with CATitledLayer

I am having some problems with an app that keeps crashing intermittently. Code below is in a UIView with CATiledLayer as its backing layer:

I get the following error code:

There doesn't seem to be any pattern to when the error occurs. It can seems to occur at some point doing scrolling or zooming. Sometimes in crashes as soon as I zoom/scroll. Sometimes I can zoom and scroll for a while until it crashes.

I know before iOS4 the UIKit was not thread safe and could not be used with CATiledLayers. See tech note My problem (i think) seems to be a thread issue. Surely UIKit can't be to blame?

0 投票
1 回答
418 浏览

xcode - 需要 drawLayer 将 3 个 PDF 文件绘制到 3 个不同的 UIViews

我正在加载 3 个不同的 PDF 文件并干燥以使用 drawLayer 将它们绘制到 3 个 UIviews 中。这可行,但它们都是 3 被绘制到一个 UIview 的同一层中。我需要将它们分别绘制到自己的 UIView 中,但我不知道如何将这段代码解析为三个部分。请问有什么想法吗?

0 投票
4 回答
4991 浏览

ios - iPad 视网膜模拟器中的 CATiledLayer 性能不佳

我希望这可能只是模拟器的一个问题,但当然这让我很担心,因为我已经提交了支持视网膜的应用程序,直到 16 日才有办法对其进行测试。

我在我的应用程序中实现了一个 CATiledLayer 来查看非常大的地图。地图的瓦片来自互联网,但它们也会被缓存,因此通常它们实际上是直接从设备加载的。

在 iPad 1 和 iPad2 上,它运行良好。您几乎无法注意到 iPad 2 上正在渲染的图块,即使它们来自互联网。

在 iPad 模拟器上,它运行良好。

我的问题是 iPad 视网膜模拟器。从视觉上看,它看起来还不错。地图大小合适,并与我用来显示数据叠加层的另一层对齐,但加载速度非常慢。在我尝试的大部分时间里,它根本不会加载任何图块,直到我开始滚动,然后当它加载图块时,它可能每秒 1 次,看起来很糟糕。

我没有在视网膜上运行与标准分辨率屏幕不同的代码,所以我希望这只是模拟器的问题......但我仍然担心。

有没有其他人在他们自己的应用程序中看到过这个?

0 投票
1 回答
294 浏览

uiscrollview - CATiledLayer 缩放后闪烁

我有带有 BIG 子视图的 UIScrollView,其中有很多小的 CATiledLayers 显示图像。

使用 zoomDidEnd 我设置了新的比例:

导致重绘tilesContainer视图及其所有图层:

我得到了完美的结果:缩放后的​​详细图像。

但是所有这些层都会闪烁(加载新数据时)。

有可能以某种方式隐藏它吗?

我需要将旧图像分层保存,直到加载新图像。

非常感谢您的帮助

0 投票
2 回答
2434 浏览

ios - CATiledLayer PDF 在 iPad 3 Retina 显示屏上的性能很差

我正在使用相当简单的代码在滚动视图中显示可缩放的 PDF,它在 iPad 2 和原始 iPad 上运行良好。但在 iPad 3 上速度慢得惊人。我知道我在推动更多像素,但渲染性能简直不能接受。

在 iOS 5.0 及更高版本中,tileSize 属性被任意限制在 1024,这意味着图块在视网膜显示屏上显示为该大小的一半。有没有人找到克服这个限制的方法?

否则,有没有人找到提高CATiledLayeriPad 3 速度的方法?

0 投票
0 回答
543 浏览

ios - CATiledLayer;高分辨率位图缩放

我正在尝试将波形(高分辨率位图)渲染到具有不同帧的 UIView 中。我想扩展它并决定使用 CATiledLayer 以获得更好的性能。但结果我得到了我没想到的。

源位图(5000 x 80 像素): 源位图: 结果(? x 80 像素): 源位图: 轨道不一样;当我继续缩放/滚动时 - 它们不同。

代码本身:

- 我在这里做错了什么?- CATiledLayer 只能按 X 轴缩放吗?

提前致谢!