добавить фоновое изображение в UITableViewController в приложении на основе навигации
-
06-07-2019 - |
Вопрос
У меня есть приложение на основе навигации, в которое я помещаю UITableViewControllers
в стек. Я хотел бы добавить фоновый UImage
ко всем моим UITableViewControllers
. Не UIColor
, а UImage
. Я знаю, как это сделать, используя файл Nib
и сам установив для UITableView
использование [UIColor ClearColor]
, но я не хочу просмотреть все мои UITableViewControllers
и изменить их на использование файлов Nib
и т. д.
Я также нашел это решение , которое было бы замечательно, если бы в моем приложении был только один tableviewcontroller. Я думаю, что мог бы быть способ сделать эту работу, добавив подпредставление " ниже " мое табличное представление, которое создается по умолчанию в UITableViewController
? Р>
Любые предложения будут отличными.
Решение
В приложении, основанном на навигации, это немного отличается: просто измените фон представления навигации, на котором находится каждое представление таблицы. Размещение следующего кода в viewDidLoad
каждого UITableViewController работает:
self.navigationController.view.backgroundColor =
[UIColor colorWithPatternImage:[UIImage imageNamed:@"myImage.png"]];
self.tableView.backgroundColor = [UIColor clearColor];
Но вам может потребоваться сделать это только один раз, на верхнем уровне контроллера навигации, а не в каждом контроллере табличного представления (хотя вам все равно придется настроить каждый фон для очистки).
Другие советы
На 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];
Как сказал Горм
нужно сделать это только один раз, на верхнем уровне
UINavigationController
Ответ на мой Madhup - правильный ответ. UITableViewController является подклассом UIViewController, поэтому добавление его в метод viewDidLoad вашего UITableViewController прекрасно работает.
Начиная с iOS 3.2, - [UITableView setBackgroundView:] существует, что может быть проще, чем другие предлагаемые решения в будущем.