gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 19:44:43 24 4
gpt4 key购买 nike

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

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com