1

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

但它们只是一种流行,看起来很邋遢。

有没有办法让他们动起来?

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

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

}
4

4 回答 4

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

就这么简单。

于 2013-07-17T13:34:38.230 回答
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)

于 2013-07-17T13:33:01.663 回答
0

您需要添加具有帧值的子视图,该帧值是您希望动画开始的位置(屏幕外?),然后更改动画块内的帧值。帧将在持续时间内发生变化,从而产生运动的外观。该视图必须已经是一个子视图 - 我不认为添加子视图是您可以制作动画的东西,这没有任何意义。

-(无效)显示选择器{

[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
                 }];
}
于 2013-07-17T13:33:31.083 回答
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];
}
于 2013-07-17T13:47:10.510 回答