Tôi muốn tạo hoạt ảnh với một số khung hình chính. Tôi muốn lớp của tôi (một nút trong trường hợp này) để quy mô lên đến 1,5 sau đó xuống 0,5 sau đó lên đến 1,2 sau đó xuống 0,8 sau đó 1,0.Làm thế nào để bạn CAKeyframeHình thức cân bằng?
Tôi cũng muốn EaseIn và EaseOut của mỗi khung hình chính.
Như bạn có thể hình dung, điều này sẽ tạo ra hiệu ứng Springy/Bounce ngay tại chỗ.
Trong các phần khác của ứng dụng của tôi, tôi đã sử dụng CAKeyframeAnimation như thế này (xem mã bên dưới). Điều này tạo ra một hình ảnh động tương tự nhưng cho vị trí x và y.
Tôi có thể điều chỉnh mã bên dưới để ảnh hưởng đến tỷ lệ thay vì vị trí không?
Cảm ơn bạn trước!
- (CAAnimation*)monInAnimation {
CGMutablePathRef path = CGPathCreateMutable();
CGPathMoveToPoint(path,NULL,113,320);
CGPathAddLineToPoint(path, NULL, 113.5, 283);
CGPathAddLineToPoint(path, NULL, 113.5, 179);
CGPathAddLineToPoint(path, NULL, 113.5, 207);
CGPathAddLineToPoint(path, NULL, 113.5, 187);
CGPathAddLineToPoint(path, NULL, 113.5, 199);
CGPathAddLineToPoint(path, NULL, 113.5, 193);
CGPathAddLineToPoint(path, NULL, 113.5, 195);
CGPathAddLineToPoint(path, NULL, 113.5, 194);
CAKeyframeAnimation *
animation = [CAKeyframeAnimation
animationWithKeyPath:@"position"];
[animation setPath:path];
[animation setDuration:1.5];
[animation setCalculationMode:kCAAnimationLinear];
NSArray *arr = [NSArray arrayWithObjects:[NSNumber numberWithFloat:0.0],
[NSNumber numberWithFloat:0.12],
[NSNumber numberWithFloat:0.24],
[NSNumber numberWithFloat:0.36],
[NSNumber numberWithFloat:0.48],
[NSNumber numberWithFloat:0.60],
[NSNumber numberWithFloat:0.72],
[NSNumber numberWithFloat:0.84],
[NSNumber numberWithFloat:1.0],nil];
[animation setKeyTimes:arr];
[animation setTimingFunctions:[NSArray arrayWithObjects:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseIn],
[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut],
[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut],
[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut],
[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut],
[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut],
[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut],
[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut],
[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut], nil]];
//[animation setAutoreverses:YES];
CFRelease(path);
return animation;
}
- (void)monBtnIn {
[monButton.layer setPosition:CGPointMake(113.5,194)];
[monButton.layer addAnimation:[self monInAnimation]
forKey:@"position"];
}
Công trình này tuyệt vời ... Cảm ơn bạn. Tôi đã thêm một .duration ngươi. Tôi sẽ kiểm tra FTUtilis - Cảm ơn. – Jonathan
Bạn chỉ có thể sử dụng số bằng cách sử dụng Keypath là "transform.scale". Phải không? –