Мне нужен пользовательский слой (расширенный новой переменной и метод) и сделал это, как показано ниже. Проблема заключается в том, что слой не будет отвечать на мой метод:Пользовательский 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
Да, я сделал это уже. Сиам привел меня на правильный путь. Просто без autorelease, поскольку я использую ARC. –