質問

UITableViewControllers をスタックにプッシュするナビゲーションベースのアプリがあります。背景 UImage をすべての UITableViewControllers に追加したいと思います。 UIColor ではなく、 UImage です。 Nib ファイルを使用してこれを行う方法と、 [UIColor ClearColor] を使用するように UITableView 自体を設定する方法を知っていますが、私はしませんすべての UITableViewControllers を調べて、 Nib ファイルなどを使用するように変更したい

このソリューションは、アプリで単一のtableviewcontrollerを使用している場合に最適です。サブビュー「下」を追加することにより、この作業を行う方法があるかもしれないと思います。 UITableViewController でデフォルトで作成されるテーブルビュー

どんな提案でもいいでしょう。

役に立ちましたか?

解決

ナビゲーションベースのアプリでは少し異なります。各テーブルビューが置かれているナビゲーションビューの背景を変更するだけです。各UITableViewControllerの viewDidLoad に次のコードを配置すると動作します:

self.navigationController.view.backgroundColor = 
[UIColor colorWithPatternImage:[UIImage imageNamed:@"myImage.png"]];
self.tableView.backgroundColor = [UIColor clearColor];

ただし、各TableViewコントローラーではなく、Navigation Controllerのトップレベルで1回だけ必要な場合があります(ただし、各背景をクリアに設定する必要があります)。

他のヒント

iOS6ではこれを使用します:

UIImageView *boxBackView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"TextureBoxboard.jpg"]];
[self.tableView setBackgroundView:boxBackView];

クラスがUIViewControllerサブクラスの場合、次のように実行できます。

[self.view setBackgroundColor:
     [UIColor colorWithPatternImage:
      [UIImage imageWithContentsOfFile:
       [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:
        @"background.png"]]]];
UIImageView *backgroundView = 
  [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"background.png"]];
backgroundView.frame = CGRectMake(0, 
                                  0, 
                               self.navigationController.view.frame.size.width, 
                               self.navigationController.view.frame.size.height);
backgroundView.autoresizingMask = UIViewAutoresizingFlexibleWidth | 
                                  UIViewAutoresizingFlexibleHeight;
[self.navigationController.view insertSubview:backgroundView atIndex:0];
[backgroundView release];
self.tableView.backgroundColor = [UIColor clearColor];

ゴームが言ったように

  

1回だけ、 UINavigationController のトップレベルで行う必要があります

私のMadhupに与えられた答えは正しい答えです。 UITableViewControllerはUIViewControllerのサブクラスであるため、UITableViewControllerのviewDidLoadメソッドに追加するとうまく機能します。

iOS 3.2では、-[UITableView setBackgroundView:]が存在します。これは、今後提案されている他のソリューションのいくつかよりも簡単な場合があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top