web-dev-qa-db-fra.com

UITableView Image de fond

J'essaie de configurer une image png comme arrière-plan de ma tableview. Avec le code suivant tout va bien! Mais uniquement sur iPhone Simulator. Si j'essaie d'exécuter l'application sur un appareil iPhone, l'arrière-plan de tableview reste blanc (ou clair). Pensez-vous que cela a quelque chose à voir avec la façon dont j'ai essayé de définir la couleur de fond. J'ai essayé de nombreuses manières jusqu'à la suivante, mais tous ont le même problème.

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

Merci d'avance!

58
user730153

Veuillez utiliser le code suivant.

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

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

Merci,

170
Ravin

Je pense que cette approche plus propre:

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

La version Swift simple sera

let tempImageView = UIImageView(image: UIImage(named: "yourImage"))
tempImageView.frame = self.tableView.frame
self.tableView.backgroundView = tempImageView;
9
Avijit Nagare

Votre image s'appelle-t-elle réellement TableViewBackground.PNG (notez les majuscules)? La casse doit correspondre exactement sur un périphérique iOS, alors qu'elle n'a pas besoin de correspondre exactement dans le simulateur.

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

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

Cela fonctionne parfaitement. Merci à Ravin de Jona

5
Jona

Une sous-classe IBDesignable tableview qui vous permettra d'attacher une image à partir du générateur d'interface

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
            }
        }
    }

}
3
Sig
[TableView setBackgroundView:nil];
[TableView setBackgroundView:[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"Apple.png"]] ];
2
anand madhav

Cela fonctionne parfaitement, même si vous souhaitez utiliser une image de modèle pour votre arrière-plan.

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

Un peu tard mais peut-être pour tous les autres à la recherche d'une solution. Je pourrais obtenir ce travail en utilisant le code suivant dans la méthode viewDidLoad de la UITableViewController:

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

ou en utilisant juste une couleur de fond:

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

J'ai mis du temps à comprendre cela, mais maintenant cela fonctionne à merveille.

0
JFS

Version Objective-c:

cell.backgroundColor = [UIColor clearColor];

Voir aussi ceci: Comment créer un UITableViewCell avec un arrière-plan transparent

0
Leon Wang