【问题标题】:CATiledLayer: Determining levelsOfDetail when in drawLayerCATiledLayer:在drawLayer中确定levelsOfDetail
【发布时间】:2010-05-12 10:37:51
【问题描述】:

我在 UIScrollView 中有一个 CATiledLayer,一切正常。现在我想添加支持以显示不同的磁贴以进行三个级别的缩放。

我已将levelsOfDetail 设置为3,并且我的图块大小为300 x 300。这意味着我需要提供三组图块(我提供PNG)来覆盖:300 x 300、600 x 600 和1200 x 1200。

我的问题是在“(void)drawLayer:(CALayer *)layer inContext:(CGContextRef)ctx”内部我无法确定当前正在绘制哪个 levelOfDetail。我可以使用 CGContextGetClipBoundingBox 检索当前所需的边界,通常这会请求上述尺寸之一的矩形,但在层边缘,图块通常较小,因此这不是一个好方法。

基本上,如果我将levelsOfDetail 设置为3,我如何确定drawLayer 在调用时是在请求1、2 还是3 级?

谢谢,

罗素。

【问题讨论】:

  • 你能解决这个问题吗?很久以来我都面临同样的问题......

标签: iphone core-animation core-graphics


【解决方案1】:

我最终解决了这个问题。

从图形上下文中获取 CTM 并查看其比例(例如 a 元素)。

    CGAffineTransform transform = CGContextGetCTM (ctx);

    transform.a holds the zoom

【讨论】:

  • 嗨 Russell,我正在使用 CATiledLayer 从 pdf 中绘制页面。它工作正常,但是当我在控制台日志中旋转设备时,我收到 3 个错误,1.wait_fences: failed to receive reply: 10004003 2.: FT_Select_Charmap failed: error 6. 3.Received memory warning。 Level=2 你知道如何解决这些错误吗?谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-01-15
  • 1970-01-01
  • 2012-06-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多