动画UISlider顺利进行
我想为UISlider设置动画,例如0.25到0.75并返回。 这应该向用户显示要做什么。
我试过这个:
[self incrementCounter:[NSNumber numberWithInt:0]]; -(void) incrementCounter:(NSNumber *)i { [Slider setValue:[i floatValue]/1000]; [self performSelector:@selector(incrementCounter:) withObject:[NSNumber numberWithInt:i.intValue+1] afterDelay:0.001]; }
但那不是那么顺利……我可以使用转换吗?
[Slider setValue:1 animated:YES];
快要…
[UIView animateWithDuration:2.0 animations:^{ [Slider setValue:0.2]; }]; [UIView animateWithDuration:2.0 animations:^{ [Slider setValue:0.5]; }];
只是动画第二个……
您需要通过将第二个动画放在第一个动画的完成块中来链接动画:
-(IBAction)animateSlider:(id)sender { [UIView animateWithDuration:2 animations:^{ [self.slider setValue:.75]; } completion:^(BOOL finished) { [UIView animateWithDuration:2 animations:^{ [self.slider setValue:0.25];//or `[self.slider setValue:(.75)-(.5*finished)];` if you want to be safe }]; }]; }
Swift 2.2版本为rdelmar的答案
@IBOutlet weak var slider: UISlider! func animateSlider(sender: AnyObject){ UIView.animateWithDuration(2, animations: {() in self.slider.setValue(0.75, animated: true) }, completion:{(Bool) in UIView.animateWithDuration(2, animations: {() in self.slider.setValue(0.25, animated: true) }) }) }
并调用该函数在参数中传递UISlider
animateSlider(self.slider)