0

有没有办法在 AppDelegate 中设置整个应用程序的默认背景图像,就像为导航栏设置默认背景一样?

例子:

[[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:@"navigation-bar.jpg"] forBarMetrics:UIBarMetricsDefault];

目前我的所有视图控制器上都有这段代码:

UIImage *backgroundImage = [UIImage imageNamed:@"bg.png"];
UIImageView *backgroundImageVIew = [[UIImageView alloc] initWithImage:backgroundImage];
self.myTable.backgroundView = backgroundImageVIew;

我在 AppDelegate 中试过这个:

UIImage *backgroundImage = [UIImage imageNamed:@"bg.png"];
UIImageView *backgroundImageVIew = [[UIImageView alloc] initWithImage:backgroundImage];
[[UITableView appearance] setBackgroundView:backgroundImageVIew];

它适用于所有视图,除了我继续使用的视图。当我按下 Table View Cell 以切换到另一个视图时,应用程序冻结并且 CPU 上升到 100%。

有什么建议么?

4

2 回答 2

0

您可以创建 UINavigationController 的自定义子类,其中您的 pushViewController 方法看起来像

    -(void) pushViewController:(UIViewController*) vc animated:(BOOL) animated
    {
            UIImage *backgroundImage = [UIImage imageNamed:@"bg.png"];
            UIImageView *backgroundImageVIew = [[UIImageView alloc] initWithImage:backgroundImage];
            vc.backgroundView = backgroundImageVIew;
            [super pushViewController:vc animated:animated];
    }
于 2012-11-15T21:26:50.583 回答
0

didFinishLaunchingWithOptions在 AppDelegates方法中使用以下代码解决了它:

UIImageView *imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"bg.png"]];
imageView.frame = CGRectMake(imageView.frame.origin.x, 64.0, imageView.frame.size.width, imageView.frame.size.height);
[window addSubview:imageView];

Y 帧中的值 64.0 用于将 imageView 推送到状态栏和导航栏 (20 + 44) 的正下方。

于 2013-06-07T21:37:42.750 回答