В моей задаче я должен создать анимацию, которая начинается с переключателя. И мне нужно изменить скорость анимации с помощью слайдера в режиме реального времени, не прерывая анимацию, я думаю, мне нужно использовать диспетчерский процесс, и я застрял на этом.Изменение iOS Просмотр скорости анимации в реальном времени
Пожалуйста, помогите мне на примере rotation.Thank вы
@interface ViewController()
@property (strong, nonatomic) UIView *currentPicture;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
self.scaleSwitch.on = self.rotationControl.on = self.translationSwitch.on = NO;
UIView *myView = [[UIView alloc] initWithFrame:CGRectMake(CGRectGetMidX(self.view.bounds)-50,
150,
100, 100)];
myView.backgroundColor = [UIColor redColor];
[self.view addSubview:myView];
self.currentPicture = myView;
}
#pragma mark - Slider Actions
- (IBAction)actionAnimationSpeedSlider:(id)sender {
self.animationSpeedLabelInfo.text = [NSString stringWithFormat:@"%.3f", self.animationSpeedSlider.value];
}
#pragma mark - Switch Actions
- (IBAction)actionSwitch:(UISwitch *)sender {
if (self.rotationControl.on)
[self rotatePicture];
else
[sender.layer removeAllAnimations];
}
-(void) rotatePicture {
CGAffineTransform currentPictureState = self.currentPicture.transform;
[UIView animateWithDuration:self.animationSpeedSlider.value
delay:0.3f
options:UIViewAnimationOptionCurveLinear|UIViewAnimationOptionBeginFromCurrentState | UIViewAnimationOptionRepeat
animations:^{
self.currentPicture.transform = CGAffineTransformRotate(currentPictureState, M_PI);
}
completion:^(BOOL finished) {
NSLog(@"Rotation finished!Repeating.");
}];
}
Спасибо, человек, я пробовал, и он не достаточно гладкий. И теперь у меня другая проблема, я не могу ее остановить. – da3m0n
Просто добавьте BOOL, который вы проверяете каждый раз, когда вы перезапускаете анимацию. – Levi
Yeaaaaahhh, что помогло, выглядит длиннее, но работает. спасибо – da3m0n