gpt4 book ai didi

ios - 如何在图层内部绘制并仅在 [view Layer addSublayer :newLayer]?

转载 作者:行者123 更新时间:2023-11-29 03:56:08 26 4
gpt4 key购买 nike

问题

如何为您的图层创建单独的上下文并将该上下文合并到 super 图层中?

为什么我要这样做

我想将 View 层的绘制抽象为单独的对象/文件。我想用图层构建一个 View ,然后将其放置在另一个 View 之上,并有其他可能性。

问题是我不知道您应该将 View 的一部分绘制到图层中,而不直接绘制到主视图子图层的上下文中。

这是一个示例,我使用 HFFoundationCALayer 进行了子类化:

@implementation HFFoundation

- (void)drawLayer:(CALayer *)layer inContext:(CGContextRef)ctx {
UIBezierPath *foundation = [UIBezierPath bezierPath];
// some drawing goes on here in the form of messages to [foundation]
}

@end

现在,当我在 View 中实例化自定义图层时 (void)drawRect:(CGRect)rect 我这样:

HFFoundation *foundation = [HFFoundation new];
foundation.frame = CGRectMake(40, viewHeight - 100, 300, 100);
foundation.backgroundColor = [[UIColor colorWithRed:1 green:.4 blue:1 alpha:0.2] CGColor];

[self.window.rootViewController.view.layer addSublayer:foundation];

我得到这个结果(没有出现绘图,只有图层框架内的背景颜色):

adding a sublayer

如果我之后[foundation drawLayer:foundation inContext:context];,绘图就会出现,但它出现在顶层上下文中,而不是在foundation层中。由于 foundation 层在层次结构中也较低,因此它隐藏了绘图(除非我减少它的 alpha,而我在图片中没有减少它):

it draws straight into the context

如何绘制到图层本身,即在这种情况下基础

最佳答案

要插入子层并设置其索引,您需要这段代码:

[view.layer insertSublayer:foundation atIndex:0];

关于ios - 如何在图层内部绘制并仅在 [view Layer addSublayer :newLayer]?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16480195/

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