我开发了一个使用UIPickerView和UIToolbar的字体选择,它们都是在触摸UIButton时添加的。
但他们只是看起来很邋..
有没有办法给它们制作动画?
这是添加它们的方法(单击按钮时调用它):
-(void)showPicker
{
[self.view addSubview:_fontPicker];
[self.view addSubview:pickerTB];
}
答案 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];
}