0
사용자 지정 속성을 애니메이션화하려고하고 있는데 여러 소스에서 보았을 때이 방법이 될 것 같지만 뭔가 빠졌습니다.사용자 지정 속성 애니메이션
이- (void)viewDidLoad
{
[super viewDidLoad];
// Instantiate the navigation line view
CGRect navLineFrame = CGRectMake(0.0f, 120.0f, self.view.frame.size.width, 15.0f);
self.navigationLineView = [[HyNavigationLineView alloc] initWithFrame:navLineFrame];
// Make it's background transparent
self.navigationLineView.backgroundColor = [UIColor colorWithWhite:0.0f alpha:0.0f];
self.navigationLineView.opaque = NO;
[[self.navigationLineView layer] addSublayer:[[HyNavigationLineLayer alloc] init]];
[self.view addSubview:self.navigationLineView];
}
것은이 : 내보기 컨트롤러에 마지막으로
@implementation HyNavigationLineView
+ (Class)layerClass
{
return [HyNavigationLineLayer class];
}
@end
그리고 :이 내 시야에있는 유일한 관련 방법이라고 생각
@implementation HyNavigationLineLayer
@dynamic offset;
- (instancetype)initWithLayer:(id)layer
{
self = [super initWithLayer:layer];
if (self) {
HyNavigationLineLayer * other = (HyNavigationLineLayer*)layer;
self.offset = other.offset;
}
return self;
}
-(CABasicAnimation *)makeAnimationForKey:(NSString *)key
{
// TODO
return nil;
}
- (id<CAAction>)actionForKey:(NSString *)event
{
if ([event isEqualToString:@"offset"]) {
return [self makeAnimationForKey:event];
}
return [super actionForKey:event];
}
+ (BOOL)needsDisplayForKey:(NSString *)key
{
if ([key isEqualToString:@"offset"]) {
return YES;
}
return [super needsDisplayForKey:key];
}
- (void)drawInContext:(CGContextRef)ctx
{
NSLog(@"Never gets called");
}
@end
: 여기에 CALayer
하위 클래스 layerClass
이 있지만 drawInContext
메서드는 전혀 호출되지 않습니다. 레이어를 그릴 무언가를 놓치고 있습니까?