【发布时间】:2026-01-13 12:25:01
【问题描述】:
我正在使用自定义图层在我的UIView 上绘图。为了使图层无效和更新,我需要将我的视图设置为我的CALayer 的代表。完成后,它会正确地绘制我的文本但是当视图接收到触摸时应用程序崩溃。
我做错了什么?
- (void) layoutSubView {
if (drawLayer == nil) {
drawLayer = [[CALayer alloc] init];
[drawLayer setDelegate:self];
[[self layer] addSublayer:drawLayer];
}
[drawLayer setFrame:[self bounds]];
[drawLayer setNeedsDisplay];
}
上面是我设置CALayer的代码,下面是覆盖的drawLayer方法。
- (void) drawLayer:(CALayer *)layer
inContext:(CGContextRef)ctx {
if (layer == drawLayer) {
UIGraphicsPushContext(ctx);
[self drawTitle:ctx];
UIGraphicsPopContext();
}
}
这是堆栈。
【问题讨论】:
-
您是否覆盖了 touchesBegan/Moved/End?崩溃的原因是什么?
-
不,我没有覆盖它们,我应该只是为了防止崩溃吗?
-
我不这么认为,但我会尝试覆盖
convertPoint:fromLayer以查看传入了哪些参数...您没有说崩溃时收到的确切错误消息。 ..
标签: iphone xcode uiview calayer stack-trace