Ne peut pas définir de cornerRadius de l'ombre ET de la couche qui a une image vue vite ses limites?
C'est estompe moi. J'ai une UIView (appelons-la "société mère"). Le dernier sous-vue de ce point de vue est une UIImageView (que l'on appellera "l'enfant"), dont l'image occupe la totalité de la "mère" de limites.
Je veux arrondir les angles sur le "parent" d'afficher et de définir une ombre portée. Je le fais sur le CALayer
de "parent" comme d'habitude:
[[parent layer] setShadowOffset:CGSizeMake(5, 5)];
[[parent layer] setShadowRadius:6];
[[parent layer] setShadowOpacity:0.4];
[[parent layer] setCornerRadius:6];
Cela montre l'ombre correctement, mais ne pas arrondir les angles.
Voici le kicker:
- Si je retire le "bébé" d'affichage de l'image, ou de la réduire afin de ne pas occuper la totalité limites de la "mère" de la vue, - je obtenir des coins arrondis et de l'ombre correctement sur le parent.
- Si je quitte le "enfant" seul, mais ensemble "clipsToBounds" sur le "parent" de vue, je reçois les coins correctement. Mais maintenant, l'ombre a disparu.
- Réglage de l'angle sur la couche de la enfant ainsi semble avoir aucun effet.
Il semble que les "enfants" d'affichage de l'image est juste occultant les coins arrondis sur le "parent", étant donné qu'il prend tout le rect, et le découpage basé sur la vue parent obtient les coins, mais aussi des masques hors de l'ombre. Je ne sais pas pourquoi #3 ne fonctionne pas.
Ce qui me manque? Ai-je été donnant sur quelque chose d'évident en regardant ce trop long?
Grâce.
(Scandaleusement, la balise "roundedcorners-dropshadow" existe déjà. Génial.)
Vous devez vous connecter pour publier un commentaire.
Vous aurez besoin de deux vues imbriquées, à l'intérieur d'un réglage des coins arrondis et le niveau d'écrêtage pour lié, et de l'extérieur vue de l'ombre (et donc pas d'écrêtage). Dans votre cas, intérieure et extérieure vue sera probablement "enfant" et "parent", mais je suppose que vous n'avez pas le droit d'écrêtage des valeurs pour ces points de vue?
Voir la réponse dans Pourquoi masksToBounds = OUI empêche CALayer de l'ombre?.
Normalement, vous devez définir clipsToBounds avoir des coins arrondis, mais puisque vous souhaitez conserver l'ombre, vous avez pour arrondir les coins de l'ombre aussi bien. Avez-vous essayé le réglage de l'ombre chemin à l'aide d'un tracé de bézier? Garder clipsToBounds/masksToBounds par défaut, AUCUN. Quelque chose comme:
Avez-vous essayé la délimitation de l'enfant UIImageView de sorte qu'il a aussi des coins arrondis? Peut-être, alors il ne serait pas annuler l'ombre du conteneur de vue. Juste une pensée, vous ne savez pas si cela va fonctionner.
Avec Swift 3, vous pouvez choisir l'un des deux extraits de code suivants afin de définir cornerRadius et de l'ombre sur une image ou sur une vue qui contient une couche d'image.
#1. À l'aide de
UIView
,CALayer
et Spring et Struts#2. À l'aide de
UIView
,UIImageView
,CALayer
et de Mise en page AutomatiqueLes deux fragments de code à générer l'affichage suivant:
Vous pouvez trouver plus de façons de combiner des images avec des coins arrondis et de l'ombre sur ce Dépôt Github.
Si vous voulez de l'ombre de la couche avec le rayon de l'angle pour imageview est mieux que les solutions mises de l'imageview vue comme sous-vue avec 1 point de la marge.. et