iphone - CATiledLayer 的背景图片

标签 iphone ios catiledlayer

如您所知,CATiledLayer 用于通过以适合 View 大小的比例显示平铺图像来显示大图像。

我有 CATiledLayer 的工作方式类似于可以在 iOS 文档中找到的示例,我计算 drawRect:(CGRect) rect 试图绘制它的行和列内容。

当 View 第一次出现时,它开始在空白 View 上逐 block 绘制,该 View /层后面没有任何内容。我试图首先放置低分辨率图像来填充图层,然后开始绘制平铺 View 。

就像当您浏览 PDF 页面时,每个页面最初都以非常糟糕的图像表示,但足以看到内容布局,当您停在某个页面时,该页面会变得更加清晰。

我知道我可以在 catiledlayer 之上添加子层,但我无法将任何层放在 catiledlayer 后面,因为这是一个主层。我还认为在同一层上加载背景图像很重要,这样可以适当缩放。

有人知道如何实现吗?

最佳答案

我终于弄明白了,感谢关键评论。

你必须做的:

  1. 使用函数 drawLayer:inContext: 中的所有动态加载逻辑创建 CATiledLayer 的子类 - 这个函数类似于 drawRect: 在 View 中
  2. 初始化新的子类 CATiledLayer
  3. 使用低分辨率图像初始化新的 CALayer
  4. 创建新的 UIView *myView = [UIView ...] 或 UIImageView(取决于您的需要)
  5. 将这两个layer放在myView.layer中作为subLayer

UIView *imageView = [[UIView alloc] initWithFrame:viewFrame];

DCTiledLayer *tiledLayer = [[DCTiledLayer alloc] initWithData:myData];

CALayer *lowResLayer = [CALayer layer];
lowResLayer.position = CGPointMake(CGRectGetMidX(viewFrame), CGRectGetMidY(viewFrame));
lowResLayer.bounds = viewFrame;
lowResLayer.contents = (id)[lowResImage CGImage];

[imageView.layer addSublayer:lowResLayer];
[imageView.layer addSublayer:tiledLayer];

它就像一个魅力。 :)

关于iphone - CATiledLayer 的背景图片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11276086/

相关文章:

ios - 在RubyMotion中获取当月底的时间对象

ios - 如果用户未登录,则将用户从 TabBar 重定向到登录 viewController (Swift)

swift - UIView绘制中的SQLite3查询(_ :) not working with CATiledLayer

ios - Xcode 将 IOS 应用程序作为其他项目分发

iphone - IB Actionsheet VS。程序化行动表

ios - 如何用其他方法识别通过蓝牙扫描的设备

iphone - iOS 上的 AirPlay 是否有任何指南

iphone - 在 UIScrollView 中为 zoomScale 设置动画时不需要的滚动

iphone - CATiledLayer 如何知道何时提供新磁贴?

iphone - 如何使用 quartz 在pdf文档中搜索文本