Iphone 如何在添加视图中添加动画?
我有一个应用程序,其中导航栏上有一个按钮。 单击该选项时,我需要将子视图添加到self.viewIphone 如何在添加视图中添加动画?,iphone,ios,ipad,Iphone,Ios,Ipad,我有一个应用程序,其中导航栏上有一个按钮。 单击该选项时,我需要将子视图添加到self.view DemoViewController *demoViewController1 = [[DemoViewController alloc] initWithNibName:@"DemoViewController" bundle:nil]; CGRect frame=demoViewController1.view.frame; frame.origin.y = -300;
DemoViewController *demoViewController1 = [[DemoViewController alloc] initWithNibName:@"DemoViewController" bundle:nil];
CGRect frame=demoViewController1.view.frame;
frame.origin.y = -300;
[self.view addSubview:demoViewController1.view];
[UIView animateWithDuration:0.5
animations:^{
CGRect frame1 = frame;
frame1.origin.y = 0;
demoViewController1.view.frame = frame1;
}];
我尝试将添加视图(它是另一个视图控制器)的帧原点y设置为某个负值,然后单击将其设置为0。但它没有下拉效果
我需要添加具有类似动画的下拉视图的视图。而当再次按下按钮时,也需要这样移除
有人能帮我吗?先把你的观点放在最下面。
当它第一次被点击时 这样做
[UIView animateWithDuration:0.3 animations:^{
//keep points that's in a screen
self.view.center = CGPointMake(x,y,width,height);
}];
当第二次单击时在可见屏幕下方给出分数
[UIView animateWithDuration:0.3 animations:^{
//keep points that's in a screen
self.view.center = CGPointMake(x,y,width,height);
}];
如果您找到了更好的方法,请告诉我。您将视图添加为子视图,其中包含不在屏幕上的帧(例如负y坐标),并修改动画帧:
MyView *myView = [[MyView alloc] initWithFrame:CGRectMake(50, -200, 200, 200)];
[self.view addSubview:myView];
[UIView animateWithDuration:0.3
animations:^{
CGRect frame = myView.frame;
frame.origin.y = 0;
myView.frame = frame;
}];
以及删除代码:
[UIView animateWithDuration:0.3
animations:^{
CGRect frame = myView.frame;
frame.origin.y = -1 * frame.size.height;
myView.frame = frame;
}
completion:^(BOOL finished) {
[myView removeFromSuperview];
}];
编辑:
将代码替换为以下内容:
DemoViewController *demoViewController1 = [[DemoViewController alloc] initWithNibName:@"DemoViewController" bundle:nil];
CGRect frame=demoViewController1.view.frame;
frame.origin.y = -300;
demoViewController1.view.frame = frame; // You forgot this line
[self.view addSubview:demoViewController1.view];
[UIView animateWithDuration:0.5
animations:^{
CGRect frame1 = demoViewController1.view.frame;
frame1.origin.y = 0;
demoViewController1.view.frame = frame1;
}];
将其放置在较高的y,然后逐渐使y到0在动画中以任何方式在CATTransference中。因为视图是另一个viewcontroller。CatTransition中有任何方法。因为视图是另一个viewcontrollerIf,您想将其添加为子视图,您可以这样做,只需使用
viewController.view
而不是myView
(还可以将viewController
添加到currentViewController.childViewControllers
)。如果你有一个iPad应用程序,我建议你在UIPopoverController中展示它。您可以从UIBarButtonItem打开它,而不是自己制作动画。在删除过程中,我尝试了[UIView animateWithDuration:0.5动画:^{CGRect frame2=[self.view viewWithTag:111]。frame;NSLog(@“%f”,frame2.origin.y);frame2.origin.y=-1*frame2.origin.y;NSLog(@“%f”,frame2.origin.y);[self.view WithTag:111].frame=frame2;//demoViewController1.view.alpha=0.0;}完成:^(BOOL完成){[[self.view WithTag:111]removeFromSuperview];}];但是没有相反的动画,我也尝试设置alpha 0,但没有受到影响。你能帮我吗?首先,声明一个变量:UIView*viewToRemove=[self.view viewWithTag:111];
并使用此选项,而不是每次调用viewWithTag:
。当您说没有动画时,您的意思是视图根本不会消失?添加视图时,您是否编写了demoViewController1.view.tag=111
?我想我看到了问题。您说frame2.origin.y=-1*frame2.origin.y;
但是origin。如果使用上述代码,y
为0,因此-1*0仍然为0。将该行替换为frame2.origin.y=-1*frame2.size.height;
[self.yourView setFrame:setYourInitialFrame];
[UIView animateWithDuration: 1.00 animations:^{
[self.yourView setFrame:setYourFinalFrame];
}];