0

我的标准视图和我在其中声明的分组 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];
}

问题是视图只是消失并重新出现,但是视图之间会发生动画从左到右滑动...如何将这些自定义背景添加到此视图更改动画中?

4

1 回答 1

2

您需要设置正在出现的视图的背景视图,而不是父视图控制器的视图。通过设置父视图控制器的视图,您实际上是在切换该视图(不会动画),而出现的视图控制器的视图(显然是清晰的)是动画的。相反,添加背景视图到出现的视图控制器视图,或者在你的情况下,只需设置颜色:

self.view.backgroundColor = UIColor colorWithPatternImage:[UIImage imageNamed:@"bgplain.png"]];

我还注意到您在根视图控制器中更改了 parentView 的背景视图,这意味着父视图可能是 UINavigationView (也根据您的评论)。一般来说,您不应该更改 navigationController 的视图特性,主要是因为它旨在容纳其他视图/控制器,而不是显示自己的视图(当然,除了导航栏)。

所以我认为你不应该在每个视图控制器中搞乱self.parentViewController.view并坚持下去。self.view

于 2012-04-16T20:50:30.493 回答