2012-03-23 6 views
3

Sur l'application iPhone de Facebook, il y a une vue de diapositive sur le côté gauche qui montre un UITableView. J'essaye de copier l'apparence de cette table, avec chaque cellule ayant ce qui semble être une bordure personnalisée (ressemble à une ligne gris clair et noire très mince?). En outre, lors de la sélection de la cellule, la cellule est surlignée en gris foncé, plutôt que le bleu par défaut.Stylisé UITableViewCell (en essayant de copier l'application iPhone Facebook Look)

enter image description here

J'ai essayé la recherche sur stackoverflow et en fait il y avait une question similaire, mais les deux seules réponses ont répondu à utiliser la bibliothèque Three20. Je voudrais savoir comment atteindre ce même aspect avec UIKit et ne pas avoir à utiliser la bibliothèque Three20.

Une aide sur la façon de reproduire ce style spécifique de UITableViewCell serait grandement appréciée!

EDIT # 1: Pour clarifier, je sais comment faire les UITableViewCells eux-mêmes, avec les images et le texte. La partie que je ne sais pas comment faire est de personnaliser les bordures et la couleur de sélection pour qu'elle ressemble à l'image d'exemple de Facebook. EDIT # 2: Juste pour être sûr, je ne demande pas non plus comment faire un diaporama. Je demande simplement comment styliser la table en fonction de la capture d'écran ci-dessous de l'application Facebook iPhone. :)

Merci!

Répondre

1

Il peut être fait en utilisant des images pour les lignes personnalisées et animation pour son effet de glissement

+0

j'étais sur le point de le mettre dans une édition. J'ai trouvé ce lien: http://cocoawithlove.com/2009/04/easy-custom-uitableview-drawing.html et il semble qu'il utilise simplement des images pour les lignes. Donc, en dehors de l'utilisation d'images pour chaque rangée, il n'y a pas beaucoup de choses que vous pouvez faire avec UIKit? Je pensais qu'il pourrait y avoir une supercherie CALayer ... – kurisukun

+0

En fait, vous pouvez changer les couleurs de l'arrière-plan de la cellule et le séparateur, mais cela ne vous donnera pas la sensation que vous recherchez. A cet effet, utiliser des images est la meilleure option et facile aussi et il vous donnera le même effet –

+0

Merci, c'est ce que je soupçonnais! :) – kurisukun

0

Voici un curseur avec un menu à gauche et à droite, vous pouvez désactiver évidemment la bonne dans le code comme je l'ai fait!

Slideout Menu: DDMenuController

Voici quelques personnalisations que j'ai fait qui ressemble comme le FB une, mais pas les images!

LeftController.m

#define UIColorFromRGB(rgbValue) [UIColor colorWithRed:((float)((rgbValue & 0xFF0000) >> 16))/255.0 green:((float)((rgbValue & 0xFF00) >> 8))/255.0 blue:((float)(rgbValue & 0xFF))/255.0 alpha:1.0] 

- (void)viewDidLoad { 
[super viewDidLoad]; 

navBarMenuArray = [[NSArray alloc] initWithObjects: 
        @"My Photos", 
        @"My Friends", 
        @"Inbox", 
        @"Stores", 
        @"Offers", 
        @"Settings",nil]; 

navBarImagesArray = [[NSArray alloc] initWithObjects: 
        @"photos.jpg", 
        @"friends.jpg", 
        @"inbox.jpg", 
        @"stores.jpg", 
        @"settings.jpg", nil]; 

searchBar = [[UISearchBar alloc] initWithFrame:CGRectMake(0.0, 0.0, 240.0, 45.0)]; 
searchBar.tintColor = UIColorFromRGB(0x0075bb); 
searchBar.placeholder = @"Search a brand or store..."; 
[self.view addSubview:searchBar]; 
[searchBar release]; 

if (!_tableView) { 
    //UITableView *tableView = [[UITableView alloc] initWithFrame:self.view.bounds style:UITableViewStylePlain]; 

    UITableView *tableView = [[UITableView alloc] initWithFrame:CGRectMake(0, 44, 320, 506) style:UITableViewStylePlain]; 
    tableView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; 
    tableView.delegate = (id<UITableViewDelegate>)self; 
    tableView.dataSource = (id<UITableViewDataSource>)self; 
    [self.view addSubview:tableView]; 
    self.tableView = tableView; 
    } 
} 

- (void)viewDidUnload { 
[super viewDidUnload]; 
self.tableView = nil; 
} 

- (NSInteger)tableView:(UITableView*)tableView numberOfRowsInSection:(NSInteger)section { 
    return navBarMenuArray.count; 
} 

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { 
    return 1; 
} 

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

    static NSString *CellIdentifier = @"CellIdentifier"; 
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
    if(cell == nil) { 
     cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier]; 
    } 
    cell.textLabel.font = [UIFont fontWithName:@"ArialMT" size:17]; 
    cell.textLabel.text = [navBarMenuArray objectAtIndex:indexPath.row]; 
    cell.textLabel.textColor = UIColorFromRGB(0xa2a9b9); 
    cell.textLabel.shadowColor = UIColorFromRGB(0x212838); 
    cell.textLabel.shadowOffset = CGSizeMake(1.0, 1.0); 
    cell.textLabel.backgroundColor = UIColorFromRGB(0x32394b); 
    self.tableView.backgroundColor = UIColorFromRGB(0x32394b); 
    self.tableView.separatorColor = UIColorFromRGB(0x262d3d); 
    return cell; 
} 
Questions connexes