Iphone 如何在添加视图中添加动画?

Iphone 如何在添加视图中添加动画?,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;

我有一个应用程序,其中导航栏上有一个按钮。 单击该选项时,我需要将子视图添加到self.view

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