2014-03-08 2 views
0

Я создал подкласс CALayer так:пользовательских 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 но ничего не отображается, когда я запускаю приложение.

Это мой viewDidLoad ViewController.

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

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

что я здесь делаю неправильно?

ответ

2

Вам необходимо установить рамку слоя. Каркас по умолчанию - {0,0,0,0}, который никогда не будет работать.

+0

thanx, это сработало :) –

Смежные вопросы