如何在添加它们时为我的子视图设置动画?

时间:2013-07-17 13:28:09

标签: ios uipickerview

我开发了一个使用UIPickerView和UIToolbar的字体选择,它们都是在触摸UIButton时添加的。

但他们只是看起来很邋..

有没有办法给它们制作动画?

这是添加它们的方法(单击按钮时调用它):

-(void)showPicker
{
    [self.view addSubview:_fontPicker];
    [self.view addSubview:pickerTB];

}

4 个答案:

答案 0 :(得分:2)

你可以通过几种方式为它们制作动画,但最简单的方法就是淡化它们。

淡入

[someView setAlpha:0]
[self.view addSubview:someView];
[UIView beginAnimations:@"FadeIn" context:nil];
[UIView setAnimationDuration:0.5];
[UIView setAnimationBeginsFromCurrentState:YES];
[someView setAlpha:1];
[UIView commitAnimations]; 

淡出

float fadeDuration = 0.5;
[UIView beginAnimations:@"FadeOut" context:nil];
[UIView setAnimationDuration:fadeDuration ];
[UIView setAnimationBeginsFromCurrentState:YES];
[someView setAlpha:0];
[UIView setAnimationDidStopSelector:@selector(removeView)];
[UIView commitAnimations];


-(void) removeView {
    [someView removeFromSuperview];
}

简单的东西。

答案 1 :(得分:0)

取决于您要使用的动画类型。例如,这看起来像溶解。 无论如何,请查看UIView animateWithDuration...

pickerTB.alpha = _fontPicker.alpha = 0;  
[self.view addSubview:_fontPicker];
[self.view addSubview:pickerTB];
[UIView animateWithDuration:1 animations:^{_fontPicker.alpha = 1; pickerTB.alpha = 1}];

您可以使用变换或更改帧起点使视图也从屏幕外的位置飞入。在这种情况下,在动画块内,指定新的屏幕位置。您可以通过两种方式执行此操作,使用更新的原点更改框架或应用CGAffineTransformMakeTranslation(dx,dy)

答案 2 :(得分:0)

您需要在子视图中添加一个帧值,该值是您希望动画开始的地方(屏幕外?),然后更改动画块内的帧值。框架将在持续时间内发生变化,从而导致运动的出现。该视图必须已经是子视图 - 我不相信添加子视图是您可以设置动画的内容,这没有任何意义。

- (void)showPicker {

[self.view addSubview: _fontPicker];
_fontPicker.frame = CGRectMake(0, 0, 120, 40);// somewhere offscreen, in the direction you want it to appear from
[UIView animateWithDuration:10.0 
                 animations:^{
                     geopointView.frame = // its final location
                 }];
}

答案 3 :(得分:0)

最初设置你的选择器视图框架和工具栏框架就像这样......

-(void)viewDidLoad
{
    [super viewDidLoad];
    pickerTB.frame = CGRectMake(0,568,320,44);
    fontPicker.frame = CGRectMake(0, 568, 320, 216);
}

-(void)showPicker
{
      [UIView beginAnimations:nil context:nil];
      [UIView setAnimationDuration:.30];
       if(isiPhone5)
       {
            pickerTB.frame = CGRectMake(0,288,320,44);
            fontPicker.frame = CGRectMake(0, 332, 320, 216);
        }else{

        pickerTB.frame = CGRectMake(0,200,320,44);
        fontPicker.frame = CGRectMake(0,244, 320, 216);
        }
    [UIView commitAnimations];
}