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

ios - Generating dynamic tiles for CATiledLayer

I've seen the WDC2010 Session 104 for using scrollviews and CATiledLayers, which is all pretty cool. But I'm not sure about the generation of the tile images. The example had the frog tile pictures already created. But if I have a photo app where I am taking my own photos, I will need to create the tiles myself and I'm not sure of the best approach to take.

Easiest method would be as soon as I take a photo and store it, I do some image manipulation and create all the possible tiles I need. But that means for every photo, I'm storing a lot more files and using more file space.

Just before I need the photo, I create the tiles into a temp directory. When I've finished the viewing part I can delete that temp directory. At least I'm only using the extra file space when viewing the photos. But I'd be concerned about loading the image to create tiles as to whether I introduce a delay which is noticeable to the user.

0 投票
1 回答
1849 浏览

ipad - CATiledLayer drawLayer:inContext:在检索要绘制的图像时释放视图时崩溃

当我的 CATiledLayer 正在检索图像以在后台线程中绘制时,当我的 ViewController 被释放时,我的应用程序崩溃了。我收到一条消息

并且调试器显示

现在,我确实想释放 MyViewController 的某个实例,因为我不再需要它了。但是当它从后台线程返回时,如何阻止它崩溃呢?

0 投票
0 回答
892 浏览

iphone - UIScrollView 和 CATiledLayer 的问题

我正在研究名为 PhotoScroller 的示例代码(Apple 的 WWDC 2010 示例)。
有一个UIScrollView在缩放时返回一个自定义 UIView

这个imageView的层是一个 CATiledLayer 。
我的问题是每次缩放都会调用 imageView 的 drawRect(基本缩放需要 10 或 30 次)。然后它刷新所有屏幕(实际上是给drawrect的大小)。
我想在发生缩放而不是整个屏幕时刷新 UIImageView 的某些部分(因此使用 setNeedDisplayInRect: 而不是 setNeedDisplay)。
但是我不知道如何继续避免调用此刷新方法来执行某些操作,从而刷新 imageView 的某些部分。

我试图在 UIScrollView 和子类 uiview(带有 catiledlayer)之间添加另一个 UIView。但我不知道如何防止子视图被刷新:-/

如果有人有想法,那将非常有帮助!

谢谢 :-)
文森特

0 投票
1 回答
879 浏览

iphone - 在 iPhone 4 上绘制 CATiledLayer 时模糊像素跨越

我正在使用以下代码在 CATiledLayer 中绘制一条线:

我得到的是这条 4px 的模糊线:

http://img837.imageshack.us/img837/5002/fuzzyline.png

如果我将 CATiledLayer 更改为 CALayer,则线条清晰且宽度为 2px,正如预期的那样。我只在 iPhone 4 上得到这种行为,在 3GS 上,CALayer 和 CATiledLayer 上的线条都很清晰。当然,在 3GS 上,这条线是 1px 粗的。

任何想法如何克服这种行为。

0 投票
1 回答
3996 浏览

iphone - CATiledLayer:示例代码

我需要在 UIImageView 中加载更高分辨率的图像。在经历了一些方法之后,如果我们加载更高分辨率的图像,内存使用量会变得巨大 [width * height * 4] 所以为了克服这个问题,需要实现 CATiledLayer 来支持更高的图像。引用 PhotoScroller 应用程序,但他们使用资源中的图像,我需要从照片库中选择这些图像。

谁能帮我解决这个问题,如何实现这个算法。任何链接或参考将被应用。

谢谢,

萨加尔

0 投票
0 回答
627 浏览

iphone - 如何在放大 CATiledLayer 时绘制未转换的上下文?

我正在使用 CATiledLayer 来可视化数据。默认情况下,drawLayer 函数获取一个转置和缩放的上下文,这允许绘图代码与缩放级别和请求的图块无关。
但是,我想使用缩放功能来改变数据的水平范围,而不发生实际的缩放。

到目前为止,我得到了这个代码:

这可行,但缺点是放大时元素会变得模糊。(每个屏幕上的像素只渲染 1/zoomfactor 像素)有
什么方法可以防止这种模糊的发生吗?
或者,有什么方法可以吸引到未转换的上下文,而不是转置的上下文?

0 投票
4 回答
2159 浏览

ios - 关联视图消失后调用的 CATiledLayer drawInContext

我今天遇到了一个有趣的 iOS 问题,涉及 CATiledLayer。这仅发生在设备上 - 而不是在模拟器中。

我的视图通过 drawLayer: inContext: 委托回调在其 CALayer 中绘制。该层有一个 CATiledLayer 派生的子层,它在重写的 drawInContext: 方法中进行自己的绘图。

两个图层都通过 CGContextDrawPDFPage() 呈现 pdf 内容。(CALayer 绘制低分辨率版本,而 CATiledLayer 子层在顶部绘制高分辨率内容。)

我遇到了一个场景,我将完成视图 - 将其从其超级视图中删除并释放它。在视图上调用 dealloc()。稍后,系统将调用 CATiledLayer 的 drawInContext: 方法(在后台线程上)。它会绘制,但是从 Springboard 方法返回时会崩溃,并且这样做也会导致我的应用程序崩溃。

我通过在 CATiledLayer 中设置一个标志来修复它,告诉它不再渲染,来自视图的 dealloc 方法。

但我只能想象有一种更优雅的方式。怎么在父层之后还是调用了 CATiledLayer drawInContext: 方法,而父层的视图被释放了?关闭视图以免发生这种情况的正确方法是什么?

0 投票
1 回答
8618 浏览

iphone - 使用 CoreGraphics CGContextDrawImage 在 CATiledLayer 中绘图

我想在 iPhone OS 3.1.3 中使用 CATiledLayer,为此,所有绘图-(void)drawLayer:(CALayer *)layer inContext:(CGContext)context都必须仅使用 coregraphics 完成。

现在我遇到了 iPhone 上翻转坐标系的问题,并且有一些建议如何使用变换来修复它:

我的问题是我无法让它工作。我开始使用 PhotoScroller 示例代码并仅用 coregraphics 调用替换绘图方法。看起来像这样

}

如您所见,我使用缩放变换来反转坐标系,并使用平移变换将原点移动到左下角。图像正确绘制,但仅绘制第一行图块。我认为平移操作或图块坐标的计算方式存在问题。

这是它的样子:

我对所有这些转变感到有点困惑。

额外问题:如何处理核心图形中的视网膜显示图片?

编辑: 为了让它在视网膜显示器上工作,我只是从示例代码中采用了原始方法来提供图像:

原则上,显示的比例被忽略,因为 Core Graphics 以像素而不是点为单位工作,因此当要求绘制更多像素时,会使用更多 CATiledLayers(或子图层)来填充屏幕。

非常感谢托马斯

0 投票
1 回答
878 浏览

iphone - 将打印的 CMYK 图像转换为 iPhone 的平铺 RGB 图像?

我收到了一些最初为印刷杂志制作的高分辨率图像,以在 iPhone 应用程序中显示,例如 Xcode PhotoScroller 应用程序(如 iPhone 的原生照片查看器应用程序)。我将它们缩小到 1024 x 1536 像素,并将它们切片以用于UIScrollViewCATiledLayer.

  1. 当我调整它们的大小时,我是否也应该将它们从 CMYK 转换为 RGB?

    我想是这样,因为 RGB 是用于数字的,对吧?但它们在 iPhone 上的 CMYK 看起来也很好。为什么他们说要使用 RGB 进行数字化?

  2. 将它们调整为 1/2 和 1/4 并将所有 3 种尺寸都切片的最佳方法是什么?

    1024/4 = 256,所以我正在考虑将每个图块(边缘图块除外)设为 256 x 256 像素。我尝试了Tile Cutter,它有效,但我有 20 张图像,所以我必须做 20 次。另外,它不会让你把级别设置得很深,所以我还必须在 PhotoShop 中调整每张图像的大小两次。所以,这是我必须通过 The Cutter 运行的 60 张图像。这不应该花太长时间,但很有可能,我会再次这样做,所以我希望有一个更好的解决方案。理想情况下,用 iPhone 做这件事会很酷,但现在,我想我会使用Paul Alexander 的 Tile Ruby 脚本,除非你提出更好的选择。我也可以试试Zoomify

0 投票
1 回答
292 浏览

iphone - 无法正确使用 CATiledLayer 为视图设置动画

带有 CATiledLayer 的 UIView 可以有动画吗?

如果我调用以下内容:

CGContextRef 上下文 = UIGraphicsGetCurrentContext();
[UIView beginAnimations:nil context:context];
[UIView setAnimationTransition: UIViewAnimationTransitionCurlUp forView:self.view cache:YES];
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
[UIView setAnimationDuration:10]; [UIView 提交动画];

如果 UIView 是没有 CATiledLayer 的“普通”UIView,这将很有效。但是,一旦我添加了 CATiledLayer 类型的子图层,动画就无法正常工作。翻页有效,但在动画完成之前不会显示底层页面(只是空白)。

我试过 [myContentView setNeedsDisplay]; 在动画块之前,之后甚至中间。如果 myContentView 有 CATiledLayer,则没有区别。

任何帮助表示赞赏。