2012-06-19 3 views
0

Мне нужен пользовательский слой (расширенный новой переменной и метод) и сделал это, как показано ниже. Проблема заключается в том, что слой не будет отвечать на мой метод:Пользовательский CALayer не отвечает на селектор

- [CALayer drawHourCircleWithDayLightStart: dayLightEnd: анимированные]: непризнанные селектор направил к экземпляру 0x6a6d560 **

Похоже, что мой Пользовательский слой не рассматривается как HourCircleLayer, а как CALayer. Но мне нужно изменить здесь?

Моя реализация выглядит следующим образом:

@interface HourCircleLayer : CALayer 
    @property (strong) UIColor *dayColor; // default yellowColor 
    @property (strong) UIColor *nightColor; // default blueColor 
    + (id)layer; 
    - (void)drawHourCircleWithDayLightStart:(NSDate *)startDate dayLightEnd:(NSDate *)endDate animated:(BOOL)animated; 
@end 

@implementation HourCircleLayer 
    + (id)layer 
    { 
    id layer = [CALayer layer]; 
    [layer setValue:[UIColor yellowColor] forKey:kDayPortionColorKey]; 
    [layer setValue:[UIColor blueColor] forKey:kNightPortionColorKey]; 

    return layer; 
    } 

    - (void)drawHourCircleWithDayLightStart:(NSDate *)startDate dayLightEnd:(NSDate *)endDate animated:(BOOL)animated 
    { 
    self.withAnimation = animated; 
    [self setDayLightStart:[self hourAngleForDate:startDate]]; 
    [self setDayLightEnd:[self hourAngleForDate:endDate]]; 
    } 

@end 

ответ

1

Это происходит потому, что вы инициализировать CALayer, но не ваш HourCircleLayer. В вашем изменении + (id)layer метода:

id layer = [CALayer layer]; 

к

HourCircleLayer layer = [[HourCircleLayer alloc] init]; 
... 

return [layer autorelease]; //Use autorelease if not using ARC 
+0

Да, я сделал это уже. Сиам привел меня на правильный путь. Просто без autorelease, поскольку я использую ARC. –

1

второй метод не является методом класса, так что вы должны сделать, как этот

HourCircleLayer *hourCircleLayer = [[HourCircleLayer alloc] init]; 
[hourCircleLayer drawHourCircleWithDayLightStart:dayLightEnd:animated:]; 
+0

работы - большое спасибо. Это привело меня также к треку, чтобы сделать это с + (id) слоем. –

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