Ajout d'une ombre portée à UITableView
J'ai une plaine UITableView (non regroupées) que je veux ajouter un dropshadow à gauche et à droite.
Comment puis-je y parvenir? J'ai essayé:
[self.tableView.layer setShadowColor:[[UIColor whiteColor] CGColor]];
[self.tableView.layer setShadowOffset:CGSizeMake(0, 0)];
[self.tableView.layer setShadowRadius:5.0];
[self.tableView.layer setShadowOpacity:1];
mais ça ne fonctionne pas.
source d'informationauteur Fred Collins
Vous devez vous connecter pour publier un commentaire.
Vous devez vous assurer que
clipsToBounds
etmasksToBounds
sont mis àNO
sur la vue et de la couche respectivement.Je voudrais partager ma solution:
Cela vous oblige à la sous-classe UITableView et ajouter une propriété, pour le bien de la démonstration, nous allons l'appeler showShadow. Ajoutez ceci à votre table une vue .h fichier:
@property (nonatomic,assign) BOOL showShadow;
et de ses correspondants @synthétiser dans le .m fichier à créer des accesseurs et des mutateurs:
@synthesize showShadow;
Puis ajouter un iVar
UIView *shadowView;
à la vue de la table .h fichier.Maintenant, dans le
- (id)initWithFrame:(CGRect)frame
méthode de votre sous-classé UITableView ajouter le bout de code suivant pour configurer l'affichage qui sera finalement jeté l'ombre:Et, enfin, écrire la méthode setter pour afficher/masquer l'ombre:
De plus, si vous souhaitez déplacer la table (pour quelque raison que ce soit), vous devez remplacer le
-setFrame:
méthode de déplacer également le shadowView avec elle (car elle n'est pas dans le tableau d'affichage de la hiérarchie):Vous avez activé avec succès les ombres ! L'utiliser comme ceci :
AVERTISSEMENT:
N'est pas l'éclat blanc je vois l'ombre? Vous n'avez pas de décalage, de sorte qu'il est en train de faire exactement ce que vous voulez. Pour une ombre, définir la couleur au noir, et de lui donner un décalage de peut-être de 3,5 ou quelque chose.