自定义背景在视图更改时没有动画
Posted
技术标签:
【中文标题】自定义背景在视图更改时没有动画【英文标题】:custom backgrounds not animating on view change 【发布时间】:2012-04-16 20:44:32 【问题描述】:我的标准视图和我在
中声明的分组 uitableview 有自定义背景//RooViewController
- (void)viewWillAppear:(BOOL)animated
[self.navigationController setNavigationBarHidden:YES animated:NO]; //Hides the navigation bar
//Add custom background
self.view.backgroundColor = [UIColor clearColor];
self.parentViewController.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"bg.png"]];
[super viewWillAppear:animated];
//GroupedTableviewController
- (void)viewWillAppear:(BOOL)animated
//Add custom background
self.tableView.backgroundColor = [UIColor clearColor];
self.parentViewController.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"bgplain.png"]];
[super viewWillAppear:animated];
与此有关的事情是视图只是消失并重新出现,但视图之间会发生动画从左向右滑动...如何将这些自定义背景添加到此视图更改动画中?
【问题讨论】:
【参考方案1】:您需要设置正在出现的视图的背景视图,而不是父视图控制器的视图。通过设置父视图控制器的视图,您实际上是在切换该视图(不会动画),而出现的视图控制器的视图(显然是清晰的)是动画的。相反,添加背景视图到出现的视图控制器视图,或者在你的情况下,只需设置颜色:
self.view.backgroundColor = UIColor colorWithPatternImage:[UIImage imageNamed:@"bgplain.png"]];
我还注意到您在根视图控制器中更改了 parentView 的背景视图,这意味着父视图可能是 UINavigationView(也根据您的评论)。一般来说,您不应该更改 navigationController 的视图特性,主要是因为它旨在容纳其他视图/控制器,而不是显示自己的视图(当然,除了导航栏)。
所以我认为你不应该在每个视图控制器中使用 self.parentViewController.view
并坚持使用 self.view
。
【讨论】:
感谢您的回复.. 这几乎符合我的需求.. 但是我想我应该提到 tableview 也在导航控制器内.. 这个解决方案与导航控制器栏混淆了。当视图随动画变化时,条形变为白色 我已经对我的回答添加了一些说明。看看有没有帮助。 好吧,很酷,我明白你的意思.. 有点,我的意思是这是一个有点令人困惑的话题。我开始对两个视图都使用 self.view .. 但是听起来我可能不应该改变东西.. 关于导航控制器,我已经在 appdelegate "MainWindow.xib" 中声明了这一点 视图控制器在您刚开始时可能是一个令人困惑的主题。访问 self.view 非常好。但是,如果您使用 IB 创建这些视图,则在此处设置所有背景视图特征会比在代码中更容易。老实说,我从不使用 IB(我总是用代码创建视图控制器),但坚持使用其中一个通常是个好主意。我也强烈推荐阅读这篇文章……全部内容:developer.apple.com/library/ios/#featuredarticles/… 谢谢,看起来不错。。我已经阅读了开发者库中的一些文章,但不是这一篇。。感谢您指出 :)以上是关于自定义背景在视图更改时没有动画的主要内容,如果未能解决你的问题,请参考以下文章
如何使带有自定义背景图像的按钮在Android中显示点击动画