2 votes

UITableview background view colour -iphone

J'ai un contrôleur UITableview sans XIB. Je règle la couleur d'arrière-plan du tableau en procédant comme suit :

[self.tableView setBackgroundColor:[UIColor colorWithPatternImage:
                                    [UIImage imageNamed:@"MmyImage.png"]]];

Mon image est une image en dégradé, et bien que le code ci-dessus soit correct, il redessine l'image pour chaque cellule lorsque le tableau passe en mode édition, et elle apparaît sous forme de lignes, ce qui n'est pas très élégant.

J'aimerais définir l'arrière-plan de la vue tableau comme étant de couleur claire et définir la couleur de la vue supérieure comme étant l'image, de sorte que la vue tableau passe en douceur au-dessus de la vue supérieure. Cependant, le code ci-dessous ne fonctionne pas :

[self.view setBackgroundColor:[UIColor colorWithPatternImage:
                               [UIImage imageNamed:@"myImage.png"]]];
[self.tableView setBackgroundColor:[UIColor clearColor]];

Cela rend le fond complètement blanc, je ne sais pas pourquoi.

Aide appréciée merci.

Modifié : nouveau code mais cela ne fonctionne pas aussi bien :

   UIImageView * imgBg = [[UIImageView alloc] initWithImage:[[UIImage imageNamed:@"myImage.png"] stretchableImageWithLeftCapWidth:6 topCapHeight:6]];
     imgBg.frame = self.tableView.window.bounds;
    [self.tableView.superview addSubview:imgBg];
//[self.view addSubview:imgBg];
    //[self.tableView.window sendSubviewToBack:imgBg];
    //[self.view  bringSubviewToFront:self.tableView];
    [self.tableView setBackgroundColor:[UIColor clearColor]];
    [imgBg release];

6voto

Deepak Danduprolu Points 33605

Dans un UITableViewController sous-classe, self.view retournera la même chose que self.tableView . Donc ce que vous faites là, c'est altérer le même objet. A la fin, vous pouvez voir le UIWindow . Donc pour obtenir le résultat souhaité, vous devez faire ceci -

~~[self.view.window setBackgroundColor:[UIColor colorWithPatternImage:[UIImage imageNamed:@"myImage.png"]]]; [self.tableView setBackgroundColor:[UIColor clearColor]];~~

UITableView a un backgroundView la propriété. Utilisez-la.

aTableView.backgroundView = [[[UIView alloc] initWithFrame:aTableView.bounds] autorelease];
aTableView.backgroundView.backgroundColor = backgroundColor;

0voto

Roki Points 1747

Alors votre deuxième code sera correct, sauf que :

[self.view setBackgroundColor:[UIColor colorWithPatternImage:
                               [UIImage imageNamed:@"myImage.png"]]];

remplacer ça :

UIImageView * imgBg = [[UIImageView alloc] initWithImage:[[UIImage imageNamed:@"myImage.png"] stretchableImageWithLeftCapWidth:6 topCapHeight:6]];
imgBg.frame = self.view.bounds;
[self.view addSubview:imgBg];
[self.view sendSubviewToBack:imgBg];

Modifier Je pense : [self.tableView setBackgroundColor:[UIColor colorWithRed:0.0 green:0.0 blue:0.0 alpha:0.0]]; va aider, c'est la seule différence maintenant.

0voto

karim Points 4704

Tout d'abord, dans votre fichier xib, ajoutez une vue parent. ajoutez une vue table dans cette vue parent. définissez la couleur d'arrière-plan de la vue parent sur le fond de votre choix. définissez ensuite la couleur d'arrière-plan de votre vue table sur [UIColor clearColor].

Vérifiez également si votre vue de table est un style de table de groupe ou non ? Si c'est un style de table de groupe, alors les cellules ont un fond distinct. Vous devez alors effacer l'arrière-plan de chaque cellule. La meilleure façon de procéder est la suivante

  1. créer un espace vide UIView *bkview = [[UIView alloc] initWithRect:CGRect(0,0)];

  2. définissez ceci comme vue d'arrière-plan de vos cellules.

J'espère que ça va marcher.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X