2012-12-15 3 views
7

예를 들어 UISlider를 애니메이션으로 만들고 싶습니다. 0.25에서 0.75까지. 사용자에게 수행 할 작업이 표시됩니다. UISlider를 원활하게 애니메이션화합니다.

난이 시도 :

[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]; 
       }]; 

그냥 두 번째를 애니메이션 ...

답변

14

을 빨리하는 것입니다 : rdelmar에 대한

-(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 
     }]; 
    }]; 
} 
2

스위프트 2.2 버전 '들

@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) 
관련 문제