2011-04-28 18 views
55

Estoy intentando configurar una imagen png como fondo de mi tabla de visión. Con el siguiente código, ¡todo está bien! Pero solo en iPhone Simulator. Si intento ejecutar la aplicación en un dispositivo iPhone, el fondo de la vista de tabla permanece en blanco (o claro). ¿Tiene algo que ver con la forma en que traté de establecer el color de fondo? Lo he intentado de muchas maneras hasta el siguiente, pero todos tienen el mismo problema.UITableView background Image

self.tableView.backgroundColor = [UIColor clearColor]; 
self.tableView.opaque = NO; 
self.tableView.backgroundView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"TableViewBackground.png"]]; 

¡Gracias de antemano!

+2

Esto suena como la imagen no se copia en el dispositivo. ¿Qué devuelve '[[UIImageView alloc] initWithImage: [UIImage imageNamed: @" TableViewBackground.png "]];' regresa en el dispositivo? Tíralo a la consola, por favor. –

+0

Creo que Nick tiene razón, puedes volcarlo usando un depurador mientras te rompes escribiendo: 'po [[UIImageView alloc] initWithImage: [UIImage imageNamed: @" TableViewBackground.png "]]';) limpiar/reconstruir podría ser útil. –

+0

O simplemente 'NSLog (@" imageView:% @ ", [[UIImageView alloc] initWithImage: [UIImage imageNamed: @" TableViewBackground.png "]]);' –

Respuesta

166

Utilice el siguiente código.

UIImageView *tempImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"TableViewBackground.png"]]; 
[tempImageView setFrame:self.tableView.frame]; 

self.tableView.backgroundView = tempImageView; 
[tempImageView release]; 

Gracias,

+0

Esto me ha estado molestando durante mucho tiempo. Muchas gracias! :) – Lucas

+0

esto es mejor que cambiar backgroundColor ya que no se repetirá el fondo cuando la tabla se desplaza o rebota. – Shinigamae

+0

Gracias. Eso resolvió mi p roblem! –

7

es la imagen que en realidad el nombre TableViewBackground.PNG (tenga en cuenta las mayúsculas)? Debe tener la coincidencia de mayúsculas y minúsculas exactamente en un dispositivo iOS, mientras que no es necesario que coincida exactamente en el simulador.

17

creo que este enfoque más limpio:

UIColor *background = [[UIColor alloc] initWithPatternImage:[UIImage imageNamed:@"TableBackground.jpg"]]; 
self.tableView.backgroundColor = background; 
[background release]; 
+0

¿sabe cómo arreglarlo en su posición para que no se desplace con la tabla? y también hacer que la imagen comience con "X" píxeles desde la parte superior? –

+0

esto causaría problemas de rendimiento en uitableview y scrollview –

+1

El uso de esta solución en dispositivos retina hace que las imágenes se estiren. Solo algo por lo que tener cuidado. –

5
UIImageView *tempImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"TableViewBackground.png"]]; 
[tempImageView setFrame:self.tableView.frame]; 

self.tableView.backgroundView = tempImageView; 
[tempImageView release]; 

Esto funciona perfecto. Gracias a Ravin por Jona

1

Esto funciona perfectamente bien, también si desea utilizar una imagen de patrón para su fondo.

UIImage *image = [UIImage imageNamed:@"something.png"]; 
self.tableView.backgroundView = nil; 
self.view.backgroundColor = [UIColor colorWithPatternImage:image]; 
0

Un poco tarde pero tal vez para todos los demás que buscan una solución. Que podría conseguir que el trabajo utilizando el código siguiente en el método viewDidLoad del UITableViewController:

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

o con el uso de sólo un color de fondo:

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

Me tomó un tiempo para darse cuenta de eso, pero Ahora funciona como un encanto.

2
[TableView setBackgroundView:nil]; 
[TableView setBackgroundView:[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"apple.png"]] ]; 
3

Un IBDesignable subclase tableview que le permitirá adjuntar una imagen de constructor de interfaces

import UIKit 

@IBDesignable 
class DesignableTableView: UITableView { 

    @IBInspectable var backgroundImage: UIImage? { 
     didSet { 
      if let image = backgroundImage { 
       let backgroundImage = UIImageView(image: image) 
       backgroundImage.contentMode = UIViewContentMode.ScaleToFill 
       backgroundImage.clipsToBounds = false 
       self.backgroundView = backgroundImage 
      } 
     } 
    } 

} 
6

SWIFT versión simple será

let tempImageView = UIImageView(image: UIImage(named: "yourImage")) 
tempImageView.frame = self.tableView.frame 
self.tableView.backgroundView = tempImageView; 
-3
UIImageView *imageviewTemp = [[UIImageView alloc] init]; 
[(UIImageView *)imageviewTemp sd_setImageWithURL:[NSURL URLWithString:self.stringOfPassedImage]]; 
[imageviewTemp setFrame:self.tableView.frame]; 
self.tableView.backgroundView = imageviewTemp; 
+1

¿dónde está configurando la imagen de fondo en la vista de tabla? No está respondiendo la pregunta – ddb

+0

. Nada en la pregunta original implica que la imagen debe ser captada desde la red. además 'sd_setImageWithURL:' no está disponible a través de UIKit. – vikingosegundo