Я использую две CABasicAnimation вместе, но что-то не так с анимацией вращения. Анимация вращения не работает нормально, это просто круг два много раз. Спасибо
Я использую CAAnimationGroup, чтобы заставить две CABasicAnimation работать вместе, но не работает
if (CGRectContainsPoint(deleteButton_hidden.bounds, locationInView)) {
[deleteButton setImage:SSZImage(@"ic_feeds_deleteSticker_active") forState:UIControlStateNormal];
deleteButton.layer.borderWidth = 1.5;//2;
deleteButton.layer.borderColor = RGBHex(@"FF424F").CGColor;
deleteButton.backgroundColor = RGBAHex(@"#FFFFFF", 0.5);
//1.
self.jumpOutAnimationEnabled = YES;
if (!self.jumpInAnimationEnabled) {return;}
self.jumpInAnimationEnabled = NO;
//
[deleteButton.layer addAnimation:[self deleteAnimation:YES duration:0.3] forKey:@"deleteBiggerAnimation"];
[textStickerView.layer addAnimation:[self stickerAnimation:NO duration:0.3 stickerView:textStickerView] forKey:@"stickSmallerAnimation"];
[UIView animateWithDuration:0.3 animations:^{
textStickerView.layer.position = deleteButton.center;
}];
} else {
[deleteButton setImage:SSZImage(@"ic_feeds_delete") forState:UIControlStateNormal];
deleteButton.layer.borderWidth = 1;
deleteButton.layer.borderColor = [UIColor whiteColor].CGColor;
deleteButton.backgroundColor = RGBAHex(@"#000000", 0.26);
//2.
self.jumpInAnimationEnabled = YES;
if (!self.jumpOutAnimationEnabled) {return;}
self.jumpOutAnimationEnabled = NO;
//
[deleteButton.layer addAnimation:[self deleteAnimation:NO duration:0.3] forKey:@"deleteSmallerAnimation"];
[textStickerView.layer addAnimation:[self stickerAnimation:YES duration:0.3 stickerView:textStickerView] forKey:@"stickBiggerAnimation"];
}
- (CAAnimationGroup *)stickerAnimation:(BOOL)stickerViewBigger duration:(CFTimeInterval)duration stickerView:(SSZFBaseStickerView *)stickerView {
//animation 1
CABasicAnimation *stickAnimation1 = [CABasicAnimation animationWithKeyPath:@"transform"];
stickAnimation1.duration = duration;
stickAnimation1.fillMode = kCAFillModeForwards;
stickAnimation1.removedOnCompletion = NO;
if (stickerViewBigger) {
stickAnimation1.toValue = [NSValue valueWithCATransform3D:CATransform3DMakeScale(stickerView.scale, stickerView.scale, 1)];
}else {
stickAnimation1.toValue = [NSValue valueWithCATransform3D:CATransform3DMakeScale(0.01, 0.01, 1)];
}
//animation 2
CABasicAnimation *stickAnimation2 = [CABasicAnimation animationWithKeyPath:@"transform.rotation"];
stickAnimation2.duration = duration;
stickAnimation2.fillMode = kCAFillModeForwards;
stickAnimation2.removedOnCompletion = NO;
if (stickerViewBigger) {
stickAnimation2.toValue = @(stickerView.rotate * M_PI/180);
}else {
stickAnimation2.toValue = @(0);
}
//CAAnimationGroup
CAAnimationGroup *group = [CAAnimationGroup animation];
group.duration = duration;
group.fillMode = kCAFillModeForwards;
group.removedOnCompletion = NO;
group.animations = @[stickAnimation1, stickAnimation2];
return group;
}
Вот видео, которое я записываю. Спасибо
https://vimeo.com/user98903552/review/338263005/79fbaa955d