【问题标题】:iPhone - UIView animation problem in viewDidLoad / viewDidAppeariPhone - viewDidLoad / viewDidAppear 中的 UIView 动画问题
【发布时间】:2011-08-29 21:27:13
【问题描述】:

我有一个 UIView,其中包含一个名为 menuView 的子视图,由 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
}

有什么问题?

附: :我想要做的是当显示视图时,该视图的某些部分(menuView)移动。该视图(部分透明)旨在覆盖另一个 ViewController 拥有的父视图。

【问题讨论】:

    标签: iphone cocoa-touch animation uiview


    【解决方案1】:

    你是从你的视图控制器调用 viewDidAppear 方法吗?一些控制器,例如 UINavigationController,会处理这个问题,但如果您使用的是自定义控制器,则需要调用它。通常,您会调用 viewWillAppear,然后添加视图,调用 viewDidAppear。

    所以你的代码块是:

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

    【讨论】:

      【解决方案2】:

      您能否确认 self.menuView 实际上已正确初始化并且不为零?

      【讨论】:

      • 呃,是的,它不是 nil...但是 viewDidAppear 没有被触发...查看我的编辑
      【解决方案3】:

      也许你应该首先调用你的方法的超级初始化?

      [super viewDidAppear:animated]

      【讨论】:

      • 我很愚蠢。请参阅我的编辑。但这并不能改变问题。仍然没有动画和 viewDidAppear 触发问题。
      • 我建议也将 viewDidLoad super 放在首位。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-12
      相关资源
      最近更新 更多