2010-11-04 7 views
0

Je voudrais avoir le contenu de ma table pour faire défiler au-dessus de mon image de fond.iPhone, puis-je avoir une cellule UITableView personnalisée et une image de fond pour la table?

ou je ne me dérange pas si les cellules peuvent prendre des morceaux de l'image d'arrière-plan, de sorte que l'arrière-plan reste derrière les cellules mais défile avec les cellules.

Est-ce possible? si c'est le cas, comment ?

J'ai essayé d'ajouter une vue de l'image et la mise en mes cellules et la couleur de fond de table pour effacer.

Voici mon code.

http://www.kidsmaskfactory.com/code/testback.zip pouvez-vous regarder?

+0

Cela devrait fonctionner. Postez votre code. – coneybeare

+0

Pouvez-vous clarifier un peu votre question? Concrètement, qu'entendez-vous par «l'arrière-plan reste derrière les cellules mais défile avec les cellules»? – Brandon

+0

On dirait que vous êtes vraiment proche. Que faire si vous redimensionnez votre table pour qu'elle soit un peu plus petite que votre arrière-plan? Pouvez-vous le voir alors? Si c'est le cas, votre vue de table est probablement découpée en sous-vues. – Brandon

Répondre

1

Comme indiqué précédemment, problème avec votre code.De l'exemple de code (http://kidsmaskfactory.com/code/testback.zip) que vous avez donné, vous devez effectuer 2 modifications:

1) Changez votre classe parente de RootViewController de UITableViewController à UIViewController. 2) Définissez la propriété d'affichage du propriétaire de fichier sur votre vue et non sur votre vue de table. Après cette recompilation & exécuter votre code & il devrait vous donner la sortie suivante.

alt text

0

Essayez de changer le backgroundView de votre UITableView à tout ce que vous voulez - probablement un UIImageView avec votre photo en elle.

Cela vous donnera une image de fond. Maintenant, la question est comment pouvez-vous faire défiler l'image de fond avec votre table. Je ne sais pas mais il y a deux posibilités:

  1. Depuis UITableView est une sous-UIScrollView - le backroundView défilera avec le reste de la table, et vous aurez pas besoin de faire quoi que ce soit.

  2. Le backgroundView est une vue séparée qui ne provient pas de UIScrollView. Vous devrez ensuite implémenter UIScrollViewDelegate pour intercepter les modifications de la position de défilement et appliquer manuellement ces modifications à backgroundView.

0

Hi Jules Suivez les étapes ci-dessous pour définir l'image de fond à tableview. Cela marche!! Je l'ai essayé.

STEP-1

Dans votre xib mettre votre tableview et la renvoyer de délégué et champs DataSource à son fichier propriétaire.

STEP-2

Maintenant, faites glisser un imageView sur votre tableview et la redimensionner à la taille de votre vue. sélectionnez l'image que vous souhaitez afficher en arrière-plan à l'aide de l'Inspecteur.

STEP-3

Sélectionnez la imageView et Aller au menu "Mise en page -> Arrière-plan"

STEP-4

Sélectionnez votre tableview et définir la couleur d'arrière-plan comme " effacer la couleur "de l'inspecteur.

Espérons que cela résout votre problème.

-1

Placez une vue d'image derrière la vue de table. Et modifiez la couleur d'arrière-plan de UITableView comme clear ([UIColor clearColor]).

+0

Je pense que le problème est là dans votre code. Parce que cette solution fonctionne toujours. Et j'ai trouvé la même solution donnée par Parth ci-dessus de façon plus descriptive. Donc je parie que le problème est dans votre code. – Sagar

+0

Voir une autre réponse publiée. – Sagar

0

Je viens de télécharger votre projet de test et voici ce que je pense.

Vous avez créé votre rootviewcontroller de façon étrange. C'est une spécialisation de UITableViewController, mais vous avez ajouté votre propre UITableView en tant que vue enfant, avec votre UIImageView. Il y a un moyen beaucoup plus facile.

Votre RootViewController doit simplement être une classe dérivée de UITableViewController, sans modification de la structure dans Interface Builder. Si vous souhaitez définir votre UIImageView dans UInterface Builder, faites glisser une UIImageView dans la XIB, mais pas en tant qu'enfant de UITableView. Faites-en un objet de premier niveau. Branchez-le à une nouvelle IBOutlet vous ajoutez dans le code à RootViewController:

@interface RootViewController : UITableViewController <UITableViewDelegate, UITableViewDataSource> { 

    IBOutlet UIImageView* _backgroundImageView; 

} 

Assurez-vous de définir l'image dans le UIImageView dans Interface Builder.

Dans votre fichier RootViewController.m, ajoutez ce qui suit:

- (void)viewDidLoad { 
    [super viewDidLoad]; 

    self.tableView.backgroundView = _backgroundImageView; 
} 

J'ai modifié votre projet de test et affiché ici: http://www.codeveloper.com/TestCustomCellWithViewBackground-TomSwift.zip

0

Etape 1: changer le RootViewController.h à:

#import <UIKit/UIKit.h> 

@interface RootViewController : UIViewController <UITableViewDelegate, UITableViewDataSource> { 
    IBOutlet UITableView *reportTableView; 

} 

@end 

étape2:

En RootViewController.m:

ajouter cette méthode:

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    reportTableView.backgroundColor = [UIColor clearColor]; 

    // Uncomment the following line to display an Edit button in the navigation bar for this view controller. 
    // self.navigationItem.rightBarButtonItem = self.editButtonItem; 
} 

Etape 3:

Dans - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

changement:

if (cell == nil) 
{ 
    NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"Cell" 
                  owner:nil options:nil]; 

    for (id currentObject in topLevelObjects) 
    { 
     if ([currentObject isKindOfClass:[UITableViewCell class]]) 
     { 
      cell = ((ReportCell *) currentObject); 
      break; 
     } 
    } 

    cell.backgroundColor = [UIColor clearColor]; 
} 

Step4:

Aller au fichier Nib

-> mettre la sortie reportTableView à tableview.

-> régler la sortie de vue sur la vue.

Cela va résoudre votre problème.

Questions connexes