【发布时间】:2010-10-27 13:33:31
【问题描述】:
我有我自己的最小视图类:
- (void) awakeFromNib
{
NSLog(@"awakeFromNib!");
[self.layer setDelegate:self];
[self.layer setFrame:CGRectMake(30, 30, 250, 250)];
self.layer.masksToBounds = YES;
self.layer.cornerRadius = 5.0;
self.layer.backgroundColor = [[UIColor redColor] CGColor];
[self setNeedsDisplay];
}
- (void)drawLayer:(CALayer *)layer inContext:(CGContextRef)ctx
{
NSLog(@"drawing!");
}
drawLayer:inContext 永远不会被调用,尽管我可以看到该层是红色的圆角矩形。我错过了什么?
编辑:来自 Apple 文档
您可以为图层绘制内容, 或更好地封装设置 通过创建一个图层的内容图像 实现其中之一的委托类 以下方法: displayLayer: 或 drawLayer:inContext:.
实现一个委托方法来绘制 内容不会自动 使图层使用它进行绘制 执行。相反,您必须 明确告诉图层实例 重新缓存内容,或者通过 向其发送 setNeedsDisplay 或 setNeedsDisplayInRect:消息,或通过 设置其需求DisplayOnBoundsChange 属性为 YES。
还有
drawLayer:inContext:
如果已定义,则由默认实现调用 的drawInContext:。
【问题讨论】:
标签: iphone core-animation core-graphics