Ios 在UISlider上添加具有时间延迟的子视图?

Ios 在UISlider上添加具有时间延迟的子视图?,ios,nstimer,uiviewanimation,uislider,Ios,Nstimer,Uiviewanimation,Uislider,我有一个UISlider,我正试图通过动画在UISlider的轨迹上动态添加子视图。在添加每个子视图之前,我需要1秒的时间延迟。如何实现这一点?这是如何实现这一点的基本设置: @interface ViewController () { NSTimer *_timer; CGRect sliderFrame; } @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]

我有一个
UISlider
,我正试图通过动画在
UISlider
的轨迹上动态添加子视图。在添加每个子视图之前,我需要1秒的时间延迟。如何实现这一点?

这是如何实现这一点的基本设置:

@interface ViewController () {
    NSTimer *_timer;
    CGRect sliderFrame;
}

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];

    self.slider.minimumValue = 0.0f;
    self.slider.maximumValue = 100.0f;

    sliderFrame = self.slider.frame;

    _timer = [NSTimer scheduledTimerWithTimeInterval:1.0f target:self selector:@selector(addLabel:) userInfo:nil repeats:YES];
    [_timer fire];
}

- (void) addLabel:(NSTimer*) timer {      
    UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(sliderFrame.origin.x + self.slider.value/100 * self.slider.frame.size.width, sliderFrame.origin.y - 10, 20, 20)];
    label.text = @"1";
    [self.view addSubview:label];
}

@end

假设您正在使用动画块,则在块内可以使用setAnimationDelay。比如,

[UIView animateWithDuration:5.0 animations:
 ^{
     [UIView setAnimationDelay:1.0];
     ...
  } completion:^(BOOL finished){
     ...        
  }];

这将在开始前以1秒的延迟制作一个5秒的动画。

您可以使用动作方法连接valueChangeEvent

可以在该方法中放置动画块,并将开始动画之前等待的秒数作为延迟参数传递

[UIView animateWithDuration:(NSTimeInterval) delay:(NSTimeInterval) options:(UIViewAnimationOptions) animations:^(void)animations completion:^(BOOL finished)completion]
然后,您可以根据需要更改并添加具有任何动画的视图