全屏 UIView 不会为其外观设置动画

Posted

技术标签:

【中文标题】全屏 UIView 不会为其外观设置动画【英文标题】:Fullscreen UIView will not animate its appearance 【发布时间】:2011-12-29 23:22:42 【问题描述】:

我需要一些帮助来完成一些基本的过渡工作。我想我在概念上不明白这一点。

我加载了一个主视图,该视图在其 viewDidLoad 中加载了一个“登录屏幕”。 “登录屏幕”是一个自定义 xib + 自定义视图控制器。 加载方式如下:

ISSplashScreenViewController* splashScreenController = [[ISSplashScreenViewController alloc] initWithNibName:@"ISSplashScreen" bundle:nil];
[UIView beginAnimations:nil context:nil];

[UIView setAnimationTransition:UIViewAnimationTransitionCurlUp forView:splashScreenController.view cache:YES];
[UIView setAnimationDuration: 1.5];

[splashScreenController viewWillAppear:YES];
[self.view addSubview:splashScreenController.view];
[splashScreenController viewDidAppear:YES];

[UIView commitAnimations];

我只能看到状态栏动画(我认为这是因为它隐藏在主窗口中,但我在登录屏幕的 viewDidLoad 中调用它)。

登录屏幕的正文“刚刚出现”。

我想知道是否有人可以解释为什么这不起作用,也许会建议我可以做些什么来使它起作用。我想我必须从应用程序的子视图中删除主视图,然后加载登录视图。

我也试过这个,但它不起作用。主视图就在那里。

[splashScreenController viewWillAppear:YES];
[self.view.superview addSubview:splashScreenController.view];
[self.view.superview bringSubviewToFront:splashScreenController.view];
[self.view removeFromSuperview];
[splashScreenController viewDidAppear:YES];

非常感谢任何帮助,

谢谢

【问题讨论】:

【参考方案1】:

尝试使用self.view 而不是启动画面控制器的视图调用-setAnimationTransition:forView:cache:

【讨论】:

我试过了,没有任何改变。我尝试为两个控制器设置动画,现在状态栏出现的速度是原来的两倍。不过,我试图加载的视图仍然没有动画。

以上是关于全屏 UIView 不会为其外观设置动画的主要内容,如果未能解决你的问题,请参考以下文章

在目标 c 中移动 UIView 时为其设置动画

拖动时为 UIView 设置动画

Swift:动画后将 UIView 的帧重置为其约束

在 iPad 上的上下文菜单中点击预览不会为全屏视图控制器的演示设置动画

在动画期间访问 UIView 的当前位置

如何在键盘外观上为 Flutter 布局设置动画