iPhone - viewDidLoad/viewDidAppear 中的 UIView 动画问题

标签 iphone cocoa-touch animation uiview

我有一个 UIView,其中包含一个名为 menuView 的 subview ,由 MenuViewController 管理。

我写了这段代码:

- (void) viewDidLoad
{
    [self.menuView setFrame:CGRectOffset(self.menuView.frame, 0.0, self.menuView.frame.size.height)];
    [super viewDidLoad];
}

- (void) viewDidAppear:(BOOL)animated
{
    [UIView beginAnimations:@"SomeAnimation" context:nil];
    [UIView setAnimationDuration:2.0];
    [UIView setAnimationDelegate:self];
    [UIView setAnimationTransition:UIViewAnimationTransitionNone forView:self.menuView cache:YES];           
    [self.menuView setFrame:CGRectOffset(self.menuView.frame, 0.0, -self.menuView.frame.size.height)];

    [UIView commitAnimations];

    [super viewDidAppear:animated];   // tried at begining too
}

但是加载后,没有动画可见...我也尝试使用 viewWillAppear 没有任何变化。

它在 MenuViewController 外部调用:

- (IBAction) showMenu
{
    MenuViewController* menuController = [[MenuViewController alloc] initWithNibName:@"Menu" bundle:nil];];
    [self.view addSubview:menuController.view];
//    [menuController release];   for try
}

有什么问题吗?

附注:我想做的是当显示 View 时,该 View 的某些部分(菜单 View )移动。该 View (部分透明)旨在覆盖另一个 ViewController 拥有的 super View 。

最佳答案

您是否从 View Controller 调用 viewDidAppear 方法?某些 Controller (例如 UINavigationController)会处理该问题,但如果您使用自定义 Controller ,则需要调用它。通常,您会调用viewWillAppear,然后添加 View ,调用viewDidAppear。

所以你的代码块是:

- (IBAction) showMenu
{
    MenuViewController* menuController = [[MenuViewController alloc] initWithNibName:@"Menu" bundle:nil];];
    [menuController viewWillAppear:YES];
    [self.view addSubview:menuController.view];
    [menuController viewDidlAppear:YES];
    [menuController release];
}

关于iPhone - viewDidLoad/viewDidAppear 中的 UIView 动画问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7236186/

相关文章:

ios - 在 UIWebView 中加载离线内容

iPhone : Does AVAudioPlayer supports . wav 格式?

iphone - MotionEnded 被多次调用

ios - 当 View 消失时从 Controller 释放所有类的对象

python - 同一图中的连续matplotlib动画

iphone - 除了使用 NSTimer 之外,在 iPhone 上创建游戏循环的更好方法是什么?

iphone - 我如何在我们的应用程序中访问日历事件和计划事件?

ios - UILabel 将文本居中对齐

qt - 在过渡动画完成后更改状态

javascript - 在不同的 ScrollMagic 场景中重复使用补间