2009-12-25 1 views
14

Sto costruendo un'app per iPhone senza l'uso di Interface Builder. Ho impostato sullo sfondo di un UITableView raggruppati nel seguente maniero:iPhone Fixed-Position UITableView Sfondo

self.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"groupedBackground.png"]];

che sto cercando di risolvere questa immagine di sfondo in modo che non scorre con le celle della tabella. Qualcuno sa come fare questo?

+0

Qual è il tuo problema con Interface Builder? –

+0

Ci ho lavorato un po 'per un po', ma ho trovato che quello che volevo fare era più semplice scriverlo in codice. Non sono contrario a usarlo in futuro. – treblig

risposta

1

Puoi posizionare una vista aggiuntiva sotto UITableView e impostarne lo sfondo, quindi se UITableView è trasparente, otterrai il tuo obiettivo: avrà lo sfondo corretto e non scorrerà.

+0

Ciò significa miscelare alfa UITableView. Hai notato un degrado delle prestazioni con questo metodo? –

+0

L'ho usato su un caso molto semplice e quindi non ho visto alcun degrado. Quindi l'unico modo per saperlo è provarlo, non dovrebbe richiedere molto tempo. –

+0

Hmmm ... suona bene, ma sto ancora avendo alcuni problemi con esso. Ho inserito il seguente codice nel ViewDidLoad del mio UITableViewController: self.view.backgroundColor = [UIColor clearColor]; UIImageView * background = [[UIImageView alloc] initWithImage: [UIImage imageNamed: @ "groupedBackground.png"]]; [self.view addSubview: background]; [self.view sendSubviewToBack: background]; Poiché "background" è ancora all'interno di tableView, scorre con il resto e le celle non vengono visualizzate sopra l'immagine di sfondo. – treblig

45

troviamo che funziona esattamente come si chiede, se invece di usare backgroundColor, si assegna a backgroundView, in questo modo:

self.tableView.backgroundView = [[UIImageView alloc] initWithImage: 
       [UIImage imageNamed:@"background.png"]]; 

Le celle della tabella quindi scorrere sulla parte superiore del fondo, che è fermo. (Questo è stato reso disponibile a partire dalla versione 3.2 del SDK, credo.)

+1

Confermato lavorando in iOS 5.1.Questa risposta dovrebbe essere accettata IMHO, essendo una soluzione più ampiamente applicabile rispetto al metodo troppo spesso pubblicizzato di aggiungere una sottoview dietro la vista tabella (che funziona solo correttamente se non si utilizza un UITableViewController). –

8

è possibile ottenere uno sfondo fisso per mezzo di un modello come segue:

UIView *patternView = [[UIView alloc] initWithFrame:tableView.frame]; 
patternView.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"groupedBackground.png"]]; 
patternView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; 
tableView.backgroundView = patternView; 
5

Un po 'tardi, ma forse per tutti gli altri alla ricerca per una soluzione. Ho potuto ottenere che il lavoro chiamando il parentViewController nel metodo viewDidLoad del UITableViewController:

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

o con l'utilizzo di un semplice colore di sfondo:

self.parentViewController.view.backgroundColor = [UIColor scrollViewTexturedBackgroundColor]; 
self.tableView.backgroundColor = [UIColor clearColor]; 

Mi c'è voluto un po 'per capirlo, ma ora Esso funziona magicamente.

0

uso di questo codice di seguito in rapida 3.0 per ottenere sfondo costante per Tableview

self.tableView.backgroundView = UIImageView(image: UIImage(named: "background.png")!)