ナビゲーションベースのアプリでUITableViewControllerに背景画像を追加する
-
06-07-2019 - |
質問
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:]が存在します。これは、今後提案されている他のソリューションのいくつかよりも簡単な場合があります。