问题标签 [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.
iphone - 如何在缩放后保持 CALayer(CATiledLayer 的子层)不改变其比例?
我有一个用于显示 PDF 页面的 CATiledLayer(这个 CATiledLayer 是我的 UIView 的图层类型,它是 UIScrollView 的子视图)。我想在此页面上添加叠加标记。所以我在我的 CATiledLayer 中添加了一个子层。该子图层再次托管不同标记的图层并充当分组图层。
从图形上看,我有:(请记住,我有多个标记,它们也是 CALayers,毕竟这是 ascii 艺术)
我已经在我的视图中设置了规范的 drawLayer:inContext: 来绘制 pdf。
当我放大以获得更多细节时,pdf会正确呈现,但标记会被缩放。无论我对 CALayer 的边界做什么,我的标记总是变得更大并且看起来参差不齐。
我希望标记始终具有相同的大小,就像它们被初始化并在绘制视图时首次显示时一样。这可能吗 ?还是我使用了错误的方法?我应该在 drawLAyer:inContext: 消息中为我包含的 CALayer 做特殊绘图吗?
如您所见,我缺少一些东西来解决我的问题。感谢您提供的任何帮助。
iphone - 为什么我的 ScrollView/CATiledView 不能正确缩放?
我有一个由 CATiledLayer 支持的 UIScrollView。该层正在从服务器中提取切片并显示它们以响应调用时的请求drawLayer:inContext
。这是它的样子:
当我放大时会出现问题。图块的大小(如clipBox
矩形所示)缩小了,如果是 32 x 32 像素,则 URL 的格式正确为 32 像素,但屏幕上显示的内容会缩放直到默认的 tileSize(在这种情况下为 128 x 128 像素)。有什么方法可以让图层正确绘制这些图像。
iphone - 如何平铺 UIWebView?
我需要使用带有 UIWebview 的图块来改进内容的呈现和滚动。
我试图在谷歌中找到一些信息,但似乎没有关于这个主题的示例或技术信息。我正在用 CATiledLayer 类做一些测试,但没有运气......
基本上,我想复制 Mobile Safari 对网站内容所做的相同操作。当您看到方格背景时,您可以看到 Safari 是如何制作图块的。
任何帮助都将非常受欢迎!
在此先感谢,弗兰基
xcode - CATiled层问题~
想知道如何将 CATiled 层应用于 webView 而不是滚动视图。经过大量书籍和搜索,完全没有发现有关如何将 CATiled 层成功应用于 webView 的信息。基本功能是使网站在 webView 上呈现更流畅。如果有人能提供他们对此的见解,我将不胜感激。
谢谢,-Zee-
iphone - CATiledLayer 在缩放时更改不同尺寸的图像(与地图相关:)
我有一个带有 UIView 的 UIScrollView,它又包含一个显示地图的 CATiledLayer。
我必须从一个可以非常深入地放大的概述开始。所以我用 4 种不同尺寸的地图制作了 4 张不同的图像(实际上是 PDF)(最大的有 5700 x 6700 像素)
我将最小的(概述)添加到 CATiledLayer,然后在某些缩放级别上交换图像。
到目前为止,这有点工作。
问题是,当我显示最大的地图(最近缩放)时,图块变得非常大,绘制它们需要很长时间(并且根据细节/偏差的水平,应用程序会产生内存警告崩溃)。
我尝试从最大的地图开始,并在地图首次显示时将缩放级别设置为最小值,但随后绘制概览需要很长时间,因为图块变得非常小(当我没有将其设置为最小缩放时,一切顺利)。
我在切换地图时尝试调整图块大小 - 但显然,这不起作用。
知道如何解决这个问题吗?;)
谢谢你的帮助...
编辑:
我现在正在尝试定义两个单独的 CATiledLayers,然后在达到某个缩放级别时交换它们 - 但这会使应用程序崩溃?
天啊... :)
编辑2:
好的 - 我让它工作了 - 或多或少。现在唯一发生的事情是,当我添加最大的图像时,CATiledLayer 的行为很奇怪。它可以正常工作一段时间,但是当绘制一定数量的图块时,我会收到内存警告并且应用程序最终会崩溃。我实际上希望这些不可见的瓷砖在离开视口时会被处理掉。这似乎没有发生,所以最终,所有的瓷砖都会被绘制出来,这对于 iPhone 内存来说似乎太多了...... :(
任何想法,如何解决这个问题?
iphone - CATiledLayer 大图崩溃应用
这与另一篇文章有些相关——但那篇文章有点搞砸了——所以我从头开始:
我有一个 CATiledLayer,里面有一个巨大的图像(5780x6700px)。
平铺层位于滚动视图中。当我开始滚动时,一切都很好,直到明显渲染了太多图块。然后我收到内存警告,应用程序崩溃。
当我收到内存警告时,我试图从视图中删除 tiledlayer,清除它的内容(rootLayer.contents = nil AND tiledLayer.contents = nil),然后将其重新附加到视图中。没用...
将感谢任何输入...
编辑:
感谢到目前为止的提示。我的一些假设似乎是错误的。我将图像加载到一个函数中,然后保留它——我猜这与 CATiledLayer 的行为相矛盾。加上UIImage imageNamed:
似乎也导致了一些错误。现在我加载图像drawLayer:(CALayer *) inContentext(CGContextRef) ctx
并使用UIImage imageWithContentsOfFile:
它来加载它。
这似乎工作而不会导致内存变低。
但是 - 瓷砖的绘制速度非常缓慢:(
这是我对 tiledLayer 的设置:
(int)level 指示要使用的图像(我在某些缩放级别上切换图像)。Level4是最大的图像...
这是drawLayer函数:
是的 - 我知道 - 我实际上在上下文中绘制了 4 个图像。PNG是我需要动态添加到主图像的叠加层......
我试图将图像合并为一个 - 但这似乎更加消耗内存/cpu ;)
非常感谢任何进一步的帮助!
iphone - 提高 CATiledView 的性能
我一直在寻找一种方法来提高我的 CATiledView 的性能。该视图几乎占据了整个屏幕(我有 iPad 和 iPhone 版本)。目前,瓷砖完全填充大约需要 12 秒(两种设备上都需要 12 秒)。我已经看到其他应用程序使用 CATiledView 并且填充图块所需的时间要少得多。
我一直使用的图像是 1 7000x5000 JPEG。我尝试将图像缩小到 5500 像素,并且加载时间没有变化,因此我相信这是我的代码有问题,如下所示:
更新:我尝试减小图像的大小(减少一半以上),我可以说没有区别。
iphone - Why is this CATiledLayer/PDF code slow?
Here is the code:
https://www.dropbox.com/s/o42wy36x4qhrbpt/PDFScroller.zip
I took the WWDC 2010 PhotoScroller
sample code that implements nested UIScrollViews
for zooming, inside a UIScrollView
for paging, and swapped out what I thought would be minimal amount of code required for displaying a multi-page PDF instead of images.
It works. But it's slow on my iPhone4, about three seconds to paint the first page, and even slower on my iPod Touch. I can watch it painting the individual tiles. This same PDF already opens up more quickly, with no visible tile drawing, in an alternate CATiledLayer
implementation I have which simply uses a single CATiledLayer
/UIScrollView
and touch events to change pages. I'd like to use this PhotoScroller
technique, it's very nice.
I watched it with CPU Sampler in Instruments, and it doesn't seem to be the PDF rendering code, it looks like the time is taken up in threading and messaging. I'd appreciate it if someone could help point out what this sample is doing to incur the overhead.
Thanks,
Jim
Update 1: I had originally used the TilingView
class technique from the sample code of defining
And then drawing in - (void)drawRect:(CGRect)rect
but switched to the explicit CATiledLayer
subclass as a first attempt at seeing whether it would make a difference, but it did not, and so I left the code as-is for posting here. There is also a missing [tiledLayer release];
leak in TilingView.
objective-c - 使用 Scale Transforms 与 Bounds Manipulation 调整 CATiledLayer 的大小
我已经让我的图层托管工作区正常工作,因此当工作区大幅缩小时,使用 CATiledLayers 处理数百张图像可以很好地工作。所有图像都使用较低分辨率的表示,并且我的应用程序在平移和缩放大量图像时响应更快。
但是,在我的应用程序中,我还为用户提供了使用调整大小句柄调整图层大小的能力。在我将图像图层转换为使用 CATiledLayers 之前,我通过根据调整大小增量(鼠标拖动)操纵图像图层的边界来调整图层大小,并且效果很好。但是现在有了 CATiledLayers,当我通过边界操作调整图层大小和通过缩放变换缩放/取消缩放工作区时,这会导致 CATiledLayers 感到困惑。
具体来说,如果我将 CATiledLayer 的大小调整为宽度/高度大小的一半(区域的 1/4),则其中的图像会突然缩放到调整大小后的帧的 1/2,留下 3/4 的帧空。这似乎正是调用内部 CATiledLayer 逻辑以提供较低分辨率图像表示的时候。如果我不触摸调整大小处理程序而只是缩放/取消缩放工作区,它工作正常。
有没有办法让缩放/调整大小与 CATiledLayers 一起玩得很好,或者我是否必须将我的图层调整大小逻辑转换为使用缩放变换而不是边界操作?
iphone - 在 iPhone 和 CA 飞机之间转换 CGPoint
我有一个 UIView 子类,我正在将 PDF 绘制到(使用 CATiledLayer)。我还需要在该 PDF 的特定区域上进行绘制,但是使用 CG 绘制时 CATiledLayer 的坐标平面非常复杂。
见图片:
我有一个点 (200,200),我需要将其转换为 CATiledLayer 的坐标系,即上面显示的第二个平面。我已经尝试通过一些转换来做到这一点,但似乎没有任何效果。
谢谢!