自定义CALayer子类未显示

时间:2014-03-08 04:07:34

标签: ios objective-c core-animation calayer quartz-core

我创建了一个像这样的CALayer子类:

#import <QuartzCore/QuartzCore.h>

@interface SHBaseLayer : CALayer

@end

和实施:

#import "SHBaseLayer.h"

@implementation SHBaseLayer

- (void)drawInContext:(CGContextRef)theContext
{
  CGContextSetStrokeColorWithColor(theContext, [UIColor blueColor].CGColor);
  CGMutablePathRef thePath = CGPathCreateMutable();
  CGPathMoveToPoint(thePath,NULL,15.0f,15.f);
  CGPathAddCurveToPoint(thePath,
                        NULL,
                        15.f,250.0f,
                        295.0f,250.0f,
                        295.0f,15.0f);
  CGContextBeginPath(theContext);
  CGContextAddPath(theContext, thePath);
  CGContextSetLineWidth(theContext, 5);

  CGContextDrawPath(theContext, kCGPathStroke);
}

@end

我正在视图控制器视图的图层中添加此图层并调用setNeedsDisplay,但在运行应用时没有显示任何内容。

这是ViewController的viewDidLoad

- (void)viewDidLoad
{
  [super viewDidLoad];

  SHBaseLayer *l = [SHBaseLayer layer];
  [self.view.layer addSublayer:l];
  [l setNeedsDisplay];
}

我在这里做错了什么?

1 个答案:

答案 0 :(得分:2)

您需要设置图层的框架。默认框架为{0,0,0,0},永远不会起作用。