代码之家  ›  专栏  ›  技术社区  ›  fyasar

uinavigationController动画问题

  •  0
  • fyasar  · 技术社区  · 15 年前

    我对两个视图之间的uinavigationController动画有一个小问题。 我的应用程序构建了两个以上的视图, 第一个视图包含登录信息,第二个视图包含根菜单,最后一个视图包含示例数据等。 my mainwindow.xib包含一个uinavigationcontroller组件,该组件包含所有导航结构。 当我的登录视图加载时,我使用这行代码

    - (void)viewWillAppear:(BOOL)animated {
    [self.navigationController setNavigationBarHidden:YES animated:NO];
    

    }

    隐藏uinavugationContoller(登录时不需要向用户显示导航栏)。 之后,当用户执行登录视图上的登录提交按钮时 我使用此代码将rootmenuView推送到uinavigationcontroller的堆栈。

    RootMenuController *rootMenuController = [[RootMenuController alloc] initWithNibName:@"RootMenuController" bundle:0];   
    [self.navigationController pushViewController:rootMenuController animated:NO];
    [rootMenuController release];
    

    它工作得很好。当rootmenuView加载的用户必须显示导航栏时,我将使用此代码显示uinavigation的工具栏。

    - (void)viewDidAppear:(BOOL)animated {
    [self.navigationController setNavigationBarHidden:NO animated:YES];
    

    }

    但是我不喜欢uinavigationController的默认动画转换,然后我用下面的代码更改了上面的代码

        [UIView beginAnimations:@"View Flip" context:nil];
    [UIView setAnimationDuration:0.50];
    [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
    
    [UIView setAnimationTransition:
     UIViewAnimationTransitionFlipFromRight
                           forView:self.navigationController.view cache:YES];
    RootMenuController *rootMenuController = [[RootMenuController alloc] initWithNibName:@"RootMenuController" bundle:0];   
    [self.navigationController pushViewController:rootMenuController animated:NO];
    
    [UIView commitAnimations];
    
    [rootMenuController release];
    

    它也在工作,但是uinavigationcontroller在两个视图转换之间闪烁。

    我没有解决这个问题。

    有什么建议吗?

    谢谢你

    1 回复  |  直到 14 年前
        1
  •  2
  •   refulgentis    15 年前

    您尝试过[setAnimationTransition:ForView:Cache:No]吗?我有一些奇怪的行为,类似于你的时候,我经常乱搞uiview动画和使用缓存。