如您所知,CATiledLayer
用于通过以适合 View 大小的比例显示平铺图像来显示大图像。
我有 CATiledLayer
的工作方式类似于可以在 iOS 文档中找到的示例,我计算 drawRect:(CGRect)
rect 试图绘制它的行和列内容。
当 View 第一次出现时,它开始在空白 View 上逐 block 绘制,该 View /层后面没有任何内容。我试图首先放置低分辨率图像来填充图层,然后开始绘制平铺 View 。
就像当您浏览 PDF 页面时,每个页面最初都以非常糟糕的图像表示,但足以看到内容布局,当您停在某个页面时,该页面会变得更加清晰。
我知道我可以在 catiledlayer 之上添加子层,但我无法将任何层放在 catiledlayer 后面,因为这是一个主层。我还认为在同一层上加载背景图像很重要,这样可以适当缩放。
有人知道如何实现吗?
最佳答案
我终于弄明白了,感谢关键评论。
你必须做的:
- 使用函数 drawLayer:inContext: 中的所有动态加载逻辑创建 CATiledLayer 的子类 - 这个函数类似于 drawRect: 在 View 中
- 初始化新的子类 CATiledLayer
- 使用低分辨率图像初始化新的 CALayer
- 创建新的 UIView *myView = [UIView ...] 或 UIImageView(取决于您的需要)
- 将这两个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/