- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个简单的 CALayer 子类 (BoxLayer),具有此 drawLayer 方法:
- (void)drawLayer:(CALayer *)layer inContext:(CGContextRef)ctx {
NSLog(@"drawLayer");
NSGraphicsContext *nsGraphicsContext;
nsGraphicsContext = [NSGraphicsContext graphicsContextWithGraphicsPort:ctx
flipped:NO];
[NSGraphicsContext saveGraphicsState];
[NSGraphicsContext setCurrentContext:nsGraphicsContext];
// ...Draw content using NS APIs...
NSPoint origin = { 21,21 };
NSRect rect;
rect.origin = origin;
rect.size.width = 128;
rect.size.height = 128;
NSBezierPath * path;
path = [NSBezierPath bezierPathWithRect:rect];
[path setLineWidth:4];
[[NSColor whiteColor] set];
[path fill];
[[NSColor grayColor] set];
[path stroke];
[NSGraphicsContext restoreGraphicsState];
}
然后我在我的 NSView 子类中有这个 awakeFromNib :
- (void)awakeFromNib {
CALayer* rootLayer = [CALayer layer];
[self setLayer:rootLayer];
[self setWantsLayer:YES];
box1 = [CALayer layer];
box1.bounds = CGRectMake(0, 0, 70, 30);
box1.position = CGPointMake(80, 80);
box1.cornerRadius = 10;
box1.borderColor = CGColorCreateGenericRGB(255, 0, 0, 1);
box1.borderWidth = 1.5;
[rootLayer addSublayer:box1];
box2 = [BoxLayer layer];
[box2 setDelegate:box2];
[box2 setNeedsDisplay];
[rootLayer addSublayer:box2];
}
虽然我的drawLayer从未被调用过,但为什么不呢?
谢谢
最佳答案
可能是因为您的图层的框架似乎等于CGRectZero
,因此操作系统可能认为它是不可见的,因此不需要绘制它。
顺便说一句,为什么要采用复杂的方式将图层的委托(delegate)设置为自身并实现 drawLayer:inContext:
而不是直接使用 drawInContext:
?
关于cocoa - 子类化 CALayer 时未调用 drawLayer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5041429/
我有一个简单的 CALayer 子类 (BoxLayer),具有此 drawLayer 方法: - (void)drawLayer:(CALayer *)layer inContext:(CGCont
我正在尝试使用 CATiledLayer + UIScrollView 实现我自己的 map 引擎。 在我实现的 drawLayer:inContext: 方法中,如果当前边界框需要某个图 block
我看到了这个solution在研究 CALayers 时。我一直在寻找一种在具有多个子层的 UIView 中实现自定义绘图的方法。我这样命名我的子层: layer1.name = @"Back"; l
我最近发布了一个 iOS 应用程序,该应用程序现在有大约 1000 次下载,我刚刚遇到第一次崩溃(我使用 Firebase Crashlytics)。 我不确定我是否正确理解了这个崩溃报告,这是一个屏
我在我的应用程序中使用了 CATiledLayer,因此,该层的绘制是在后台线程中完成的。也就是说,我的委托(delegate)的 drawLayer:inContext: 方法是从后台线程调用的。用
我的应用程序在[UIView(CALayer Delegate)drawLayer:inContext:中崩溃了,最困难的是崩溃日志中没有我的应用程序代码,我无法重现它。这个问题使我花了几天的时间,但
我目前正在将 XCode/Swift 中的 iOS 应用程序翻译成 Xamarin iOS. 在现有的swift代码中,有一个自定义控件继承自UIView,并覆盖了drawLayer函数。 但是,当我
我正在尝试为自定义 UIView 的边界设置动画,同时保持其图层与其父 View 的大小相同。为此,我试图在其父 View 旁边为图层边界设置动画。我需要图层调用 drawLayer:withCont
我正在做一个涉及 Core Animation 和 AV Foundation 的项目。我想使用 Core Animation 渲染一些效果,然后通过 AV Foundation 将其导出到视频文件。
我有一个使用 CATiledLayer 显示 PDF 页面的 UIView,现在我想在 TiledLayer 上添加另一个 CALayer 来绘制一些注释,请参见下面的代码。 + (Class
我有一个简单的滚动图,它使用这种方法来绘制自己。我正在寻找一种将文本标签添加到此图形的方法,但找不到如何执行此操作。 我试过: [@"test" drawInRect: CGRectMake(0, 0
我试图在 ipad 上渲染后突出显示 pdf 上的文本。我觉得我通过大量谷歌搜索和 fastPdfKit 提供的示例代码取得了一些成就。 .通过此链接,我可以轻松解析 pdf 并尝试突出显示用户搜索中
当我的 CATiledLayer 正在检索图像以在后台线程中绘制时,当我的 ViewController 被释放时,我的应用程序崩溃了。我收到一条消息 -[MyViewController respo
我试图了解 CATiledLayer在使用 CGContextDrawPDFPage() 渲染 PDF 页面时有效. 我的理解是 drawLayer:inContext:每个图 block 和细节级别
我不明白为什么我创建的 CALayer 没有调用它们的 drawLayer 方法。我已经为他们创建了一个 drawLayer 委托(delegate)对象,但它从未被调用过。来自 UIView 子类:
我有一个类是 UIView 的子类。我可以通过实现 drawRect 方法或通过实现 drawLayer:inContext: 来在 View 中绘制东西,这是 CALayer 的委托(delegat
我是一名优秀的程序员,十分优秀!