我有一个 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/