Widziałem niektóre aplikacje iPhone, które używają niestandardowego obrazu jako tła dla zgrupowanego UITableView, zamiast standardowych szarych linii.Jak ustawić obraz tła dla zgrupowanego widoku tabeli?
Jak to osiągnąć?
Widziałem niektóre aplikacje iPhone, które używają niestandardowego obrazu jako tła dla zgrupowanego UITableView, zamiast standardowych szarych linii.Jak ustawić obraz tła dla zgrupowanego widoku tabeli?
Jak to osiągnąć?
W innym projekcie (opracowanym przy użyciu wersji 2.2.1) zrobiłem to, ustawiając przezroczystość tła na UITableView'
na 0%, a następnie po prostu nakładając na nie warstwę UIImageView
za pomocą programu Interface Builder. Pozwoliło mi to mieć stałe tło niezależnie od stanu tabeli. Można także ustawić tło obrazu UITableView
, aby był obrazem, ale wtedy tło będzie przewijane razem z tabelą. (W tej chwili nie mam kodu, ale dostałem cynk z powrotem na forach programistów Apple).
Należy pamiętać, że może to spowodować problemy z wydajnością. Firma Apple zniechęca do korzystania z przezroczystości, gdy tylko jest to możliwe, ponieważ procesory graficzne w modelach sprzed 3GS nie są szczególnie rozbudowane.
Można użyć metody +[UIColor colorWithPatternImage:(UIImage)]
tak:
self.tableView.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"Background.png"]];
problem z colorWithPatternImage: jest to, że trzeba użyć „wzorzyste” obrazów, w przeciwnym razie obraz będzie kafelki losowo
ten link ma proste rozwiązanie, jeśli chcesz, aby wszystkie twoje poglądy mają to samo tło
self.parentViewController.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"SortByCategory_320x480.png"]];
self.tableView.separatorColor = [UIColor clearColor];
self.tableView.backgroundColor = [UIColor clearColor];
Mam nadzieję, że to pomoże. Nie wyświetli ohydnego półprzezroczystego tła za komórkami, szczególnie w przypadku zgrupowanego UITableView.
Oto co pracował dla mnie (i dość proste, gdy wyobraziłem go;)
1) Dodawanie widoku w aplikacji delegata i uczynić z niego widok podrzędny okna:
UIView *bgView = [[UIView alloc]initWithFrame:window.frame];
bgView.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"screenBG.png"]];
[window addSubview:bgView];
[bgView release];
2) w każdym pliku .m widok kontrolera pod viewDidLoad ustawić kolor tła danego celu przejrzyste (więc drugi bgView stworzony powyżej pokaże through):
self.view.backgroundColor = [UIColor clearColor];
iw moim przypadku, v Kontroler iew w kroku 2 był kontrolerem tableview. Wygląda świetnie.
I BTW, wykonując następujące czynności w każdym kontrolerze widoku NIE działa dobrze:
self.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"screenBG.png"]];
Więc wykonaj kroki 1 i 2 powyżej.
Nadzieja to pomaga się, tbone
Podoba mi się ta sztuczka. – winnicki
W delegacie aplikacji możesz także łatwiej: self.window.backgroundColor = [UIColor colorWithPatternImage: [UIImage imageNamed: @ "bg.png"]]; –
Zgadzam się z Gil Margolin tutaj ... było łatwiej ustawić kolor tła okna jako obraz. Z jednym zastrzeżeniem - musisz ręcznie załadować poprawny obraz dla siatkówki/iphone5, co trochę skomplikowało. –
Spróbuj
- (void) viewDidLoad {
[super viewDidLoad];
self.tableView.backgroundColor = [UIColor clearColor];
self.view.backgroundColor = [UIColor colorWithPatternImage: [UIImage imageNamed:@"wallpaper.png"]];
self.tableView.opaque = NO;
}
Możesz także dodać widok obrazu za widokiem tabeli zamiast ustawiania koloru tła, co pozwoli ci uniknąć używania obrazu wzoru. – TigerCoding
Dostęp parentViewController.view jest straszny pomysł - nie wiem jakiego rodzaju kopii ma, i to jest bardzo złe naruszenie enkapsulacji. Nawet jeśli teraz działa, kolejna aktualizacja iOS może całkowicie złamać twój kod. Nie rób tego. –