问题标签 [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 投票
3 回答
4936 浏览

iphone - 在 CATiledLayer 中预加载/预显示图块?

在 iPhone 上(虽然我认为这在 Cocoa 中同样有效)我有一个 UIScrollView 围绕一个由 CATiledLayer 支持的 UIView。默认情况下,它的工作方式是在我的视口滚动到 CATiledLayer 的空白部分时加载任何未缓存/未获取的切片。

我想知道的是,是否有办法触发 CATiledLayer 加载未主动显示的图块?例如,我想在它们仍在屏幕外时预加载与当前显示的图块相邻的所有图块,从而避免在异步加载后闪烁的空白屏幕淡入图像。

有任何想法吗?

0 投票
5 回答
5593 浏览

iphone - CATiledLayer 在绘制内容之前消隐图块

全部,

我无法从 CATiledLayer 获得我想要的行为。有没有一种方法可以触发瓷砖重绘,而不会产生首先将它们的区域清除为白色的副作用?我已经将 CATiledLayer 子类化为将 fadeDuration 设置为返回 0。

更具体地说,以下是我所看到的以及我正在努力实现的目标的详细信息:

  • 我有一个内容大小很大的 UIScrollView...~12000x800。它的内容视图是一个由 CATiledLayer 支持的 UIView。
  • UIView 使用大量自定义绘制的线条呈现
  • 一切正常,但 UIView 的内容有时会发生变化。发生这种情况时,我想尽可能无缝地重绘瓷砖。当我在视图上使用 setNeedsDisplay 时,图块会重新绘制,但它们首先会被清除为白色,并且在绘制新内容之前会有几分之一秒的延迟。我已经对 CATiledLayer 进行了子类化,以便将 fadeDuration 设置为 0。
  • 我想要的行为似乎应该是可能的......当您放大滚动视图并且内容以更高分辨率重绘时,重绘之前没有空白;新内容绘制在旧内容之上。这就是我要找的。

谢谢; 我很欣赏你的想法。

更新

只是跟进 - 我意识到在重绘之前瓷砖没有被清除为白色,它们被完全取出;我看到的白色是我的 CATiledLayer 支持的视图下方的视图颜色。

作为快速破解/修复,我在 UIScrollView 下方放置了一个 UIImageView,在触发 CATiledLayer 支持的视图的重绘之前,我将其可见部分渲染到 UIImageView 中并让它显示。这大大平滑了重绘。

如果有人有更好的解决方案,比如在重绘之前防止重绘目标瓷砖消失,我仍然很想听听。

0 投票
1 回答
4301 浏览

iphone - CATiledLayer 绘图崩溃

在我的应用程序中,我使用了以下视图层次结构:

简而言之 -TiledView显示大平铺图像我还将自定义旋转应用于该视图:

TiledView 的绘制方法:

UIScrollView 允许滚动和缩放其内容。
覆盖视图覆盖 UIScrollView,具有透明背景并执行一些自定义绘图。我使用单独的视图来确保线宽和字体大小不受滚动视图中缩放比例的影响。

OverlayView的绘制方法:

最初一切正常,但在玩了一些视图之后(例如来回滚动等),它在其中一个绘图函数中的某个随机线上崩溃。作为示例应用程序在线崩溃:

带堆栈:

我错过了几个图形上下文之间所需的任何同步吗?或者可能有更好的方法来做我正在尝试的事情?

0 投票
2 回答
5867 浏览

iphone - 使用 NSString 的 drawAtPoint 方法代替 CGContextShowGlyphsAtPoint 问题

在我的应用程序中,我试图沿路径呈现文本;这对大多数字符都很好,但对日语(或任何非 mac-Roman)来说不是。有人建议我使用 [NSString drawAtPoint] 在我的 CATiledLayer 中显示正确的字符;但是,它们会在大约 5 秒后消失。在这个时候,我可以缩放图层并且它们可以正确缩放,但它们似乎不像文本的其余部分那样致力于 CATiledLayer。

在渲染之前,我会检查字符串并决定它们中的任何一个是否不可渲染。如果我遇到问题,我会使用 drawAtpoint 代替:

有没有人对为什么文本消失有任何指示?

一旦使用了drawAtPoint,我的调试输出就会被淹没:

所以我猜这与我的上下文管理有关,但我认为如果这与我使用 CGContextShowGlyphsAtPoint 在同一个地方,它应该已经有正确的上下文了吗?

0 投票
3 回答
7153 浏览

iphone - iPhone 的 MapKit 是否可以叠加平铺

我已经设置了与 Google Maps JavaScript API 一起使用的磁贴源。我正在尝试将其翻译为与 iPhone MapKit 一起使用。我已将 javascript 缩放级别正确实现到 mapkit 中。每当- (void)mapView:(MKMapView *)mapView regionDidChangeAnimated:(BOOL)animated调用时,我都会根据同一中心点将该区域捕捉到最近的缩放级别。

是否有可能使用 CATiledLayer 实现一个解决方案来实现一个平铺解决方案。iPhone 是否像谷歌地图一样使用标准的 256x256 瓷砖?对此的任何指导或帮助将不胜感激。如果不可能的话,我宁愿不要浪费几个星期来尝试实现这一点。

0 投票
2 回答
556 浏览

iphone-sdk-3.0 - 一种检测CATiledLayer的方法?

我正在使用 CATiledLayer 来显示一个 pdf 页面。但是该层确实有一些时间来绘制上下文。

因此,我尝试在该图层旁边添加背景,并在 CATiledLayer 显示成功后移除背景。

我的问题是有什么方法可以检测 CATiledLayer 的绘图状态吗?

谢谢你的帮助。

0 投票
3 回答
1977 浏览

iphone - 如何从我的 CATiledLayer 中移除这些旋转伪影?

我有一个 CATiledLayer,我用以下方法将内容渲染到其中

我使用 QuartzDemo 代码来绘制图案。在我对图层的 parentLayer(一个 UIView)应用旋转变换之前,这非常有效:

非旋转CATiledLayer

旋转:

旋转的CATiledLayer

当我开始在 CATiledLayer 中绘制线条和文本时,这些锯齿形伪影会变得更糟。

我按如下方式应用了变换(我也尝试在视图本身上使用仿射变换):

我转换了 containerView 而不是层本身,因为我在该视图中有几个层,我想同时旋转而不改变相对位置。

过去旋转 UIImageViews 时我没有遇到问题。

有没有办法可以在没有这些问题的情况下旋转 CATiledLayer?

任何帮助将不胜感激。

你的,

菲利克斯

0 投票
1 回答
3447 浏览

iphone - 为什么我的 CATiledLayer 在缩放后不会在 UIScrollView 中滚动?

我目前在使用 CATiledLayer 时遇到以下问题:当视图首次加载时,滚动效果很好,但是当您缩放一次时,视图会捕捉到锚点(左上角)并且它根本无法滚动。缩放的工作原理是它会放大和缩小,但它只会放大到左上角。

我的代码如下:

0 投票
1 回答
2463 浏览

iphone - iPhone:CATiledLayer/UIScrollView 缩放后不会滚动,只会缩放到锚点

这就是问题所在......我正在使用 CA Tiled Layer 来显示一个大的 jpg。视图加载正常,当我滚动时,它工作正常。但是,一旦我放大或缩小一次,它就会滚动到左上角(到锚点)并且根本不会滚动。缩放工作正常,但我无法滚动。

这是我的代码:

0 投票
1 回答
1083 浏览

iphone - 如何让 CATiledLayer 不阻塞主线程

我正在实施 a CATiledLayerinto a UIScrollView。在 中CATiledLayer,我有一个绘制图层的函数,如下所示:

问题在于,当每个图块正在下载时,它会阻止其他图块的下载。如果这些图块是并行下载的,我会非常喜欢。特别是它会阻止我无法控制的另一个 UI 元素的下载。

基本上,我只需要知道如何在CATiledLayer绘图消息中异步下载数据。