カスタムレイヤー(新しい変数とメソッドで拡張)が必要で、以下のようにしました。問題は、レイヤーが私のメソッドに応答しないことです:
-[CALayer drawHourCircleWithDayLightStart:dayLightEnd:animated:]: 認識されないセレクターがインスタンス 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