Une ombre sous la dernière cell d'une UITableView
Kubernan
Membre
Bonjour,
Je voulais mettre un peu de relief à ma table view (de style plain) en ajoutant une ombre sous la dernière cellule de la table.
J'avoue que je n'ai pas cherché sur le net une façon de faire mais je présente la mienne qui fonctionne très bien.
codé pour iOS 5
Au départ j'avais utilisé layer.shadowOffset mais au vu des performances catastrophiques que cela engendrait j'ai changé par un setShadowPath qui n'impacte aucunement les perf.
Ma cell est ici une sous classe de UITableView dans la quelle je supprime le shadow via - (void)prepareForReuse
Le seul soucis qui me reste à gérer (j'ai pas encore chercher de solution) c'est lorsque j'insère une cell qui prend la place de la dernière cell de la table... dans ce cas l'ombre est présente sur les deux dernières cell. C'est pas joli.
Je voulais mettre un peu de relief à ma table view (de style plain) en ajoutant une ombre sous la dernière cellule de la table.
J'avoue que je n'ai pas cherché sur le net une façon de faire mais je présente la mienne qui fonctionne très bien.
codé pour iOS 5
<br />
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath<br />
{ <br />
NSInteger numberOfSection = tableView.numberOfSections;<br />
<br />
if (indexPath.section == numberOfSection-1) { // Shadow in the last cell of the last section<br />
if (indexPath.row == [tableView numberOfRowsInSection:indexPath.section]-1) { // Drawing a shadow at the bottom of the last cell<br />
CALayer *layer = cell.layer;<br />
layer.opaque = YES;<br />
// We build a small rectangle that come little bit outside (6px) the current cell<br />
[layer setShadowPath:[[UIBezierPath bezierPathWithRect:CGRectMake(0.0, cell.bounds.origin.y+cell.bounds.size.height-4, cell.bounds.size.width, 6.0)] CGPath]];<br />
layer.shadowColor = [[UIColor blackColor] CGColor];<br />
layer.shadowOpacity = 1.0;<br />
layer.shadowRadius = 5.0;<br />
}<br />
}<br />
}<br />
Au départ j'avais utilisé layer.shadowOffset mais au vu des performances catastrophiques que cela engendrait j'ai changé par un setShadowPath qui n'impacte aucunement les perf.
Ma cell est ici une sous classe de UITableView dans la quelle je supprime le shadow via - (void)prepareForReuse
Le seul soucis qui me reste à gérer (j'ai pas encore chercher de solution) c'est lorsque j'insère une cell qui prend la place de la dernière cell de la table... dans ce cas l'ombre est présente sur les deux dernières cell. C'est pas joli.
Mots clés:
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
C'est si tu ne renseignes pas le shadowPath que ça rame /wink.png' class='bbc_emoticon' alt=';)' />
http://www.omnigroup.com/blog/entry/ipad_drop_shadow_performance_test/