我希望以动画方式增加UISlider的宽度,但在尝试使用滑块后动画完成后,它会返回到它的起始宽度,即0。
in .h
UISlider *slider;
in .m
viewDidLoad:
slider=[[UISlider alloc]initWithFrame:CGRectMake(65, 65, 0, 23)];
[self.view addSubview:slider];
和IBAction
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationBeginsFromCurrentState:1];
[UIView setAnimationDuration:0.5];
slider.frame=CGRectMake(65, 65, 183, 23);
[UIView commitAnimations];
答案 0 :(得分:0)
检查ViewController上是否启用了自动布局。您可能需要将其关闭以获得您期望的行为。
希望这有效。
修改强>
好的,我想我找出了你的问题。 UISlider在视图上不可见,除非它的宽度大于3.我假设您正在初始化宽度为0的UISlider,因为您希望它“无处不在”动画。您必须初始化宽度大于3的UISlider才能使其具有动画效果。如果你仍然想要一个'无处不在'的效果,我会在初始化时将UISlider的alpha属性设置为0,然后在动画块中将alpha设置为1。
像这样:
viewDidLoad中:
slider=[[UISlider alloc]initWithFrame:CGRectMake(65, 65, 4, 23)];
slider.alpha=0;
[self.view addSubview:slider];
IBAction为:
[UIView animateWithDuration:5.0 animations:^{
slider.frame=CGRectMake(65, 65, 183, 23);
slider.alpha = 1;
} completion:^(BOOL finished) {
//write code to be executed when animation is done
}];