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

親View Controllerのビューではなく、表示されているビューの背景ビューを設定する必要があります。親View Controllerのビューを設定することにより、表示されるView Controllerのビュー(明らかに明確です)がアニメーション化されている間、本質的にそのビュー(アニメーション化されない)を切り替えます。代わりに、背景ビューを追加します表示されるView Controllerビューに、またはあなたの場合は色を設定するだけです:

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

また、ルート ビュー コントローラーでparentViewのバックグラウンド ビューを変更したことにも注意しました。これは、親ビューがおそらく UINavigationView であることを意味します (これもコメントによる)。一般に、navigationController のビューの特性を変更するべきではありません。これは主に、他のビュー/コントローラーを保持するように設計されており、独自のビューを表示しないためです (もちろん、ナビゲーション バー以外に)。

したがって、各View Controllerをいじってself.parentViewController.view固執するべきではないと思います。self.view

于 2012-04-16T20:50:30.493 に答える