gpt4 book ai didi

iphone - CATiledLayer 的背景图片

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:25:06 28 4
gpt4 key购买 nike

如您所知,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/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com