J'écris une bibliothèque d'interface user dans laquelle je voudrais pouvoir avoir l'alpha des UIViews comme si le ket UIViewGroupOpacity info.plist était défini. Voir les liens suivants:
Rendre UIView et les sous-vues translucides comme une couche, pas individuellement
iOS contrôlant le comportement d'UIView alpha pour les sous-vues
Mais, comme j'écris une lib, je ne veux pas que les projets aient à définir cette key globale et à affecter le comportement du projet principal.
Y a-t-il un autre moyen d'y parvenir? Je ne veux pas faire défiler toutes les sous-vues et définir l'alpha de chaque sous-vue, car le projet qui inclut ma bibliothèque pourrait avoir cette key activée …
Oui il y a, vous pouvez définir shouldRasterize
de la couche de la vue.
containerView.layer.shouldRasterize = YES; // Not setting rasterizationScale, will cause blurry images on retina displays: containerView.layer.rasterizationScale = [[UIScreen mainScreen] scale];
Cela aura le même effet que UIViewGroupOpacity
mais seulement pour containerView
et ses sous-vues.
Pour iOS 7.0 et versions ultérieures:
Depuis iOS 7.0, cela peut être contrôlé individuellement pour chaque CALayer
via la propriété allowsGroupOpacity
. En le définissant sur YES
, vous obtenez le même comportement que si UIViewGroupOpacity
était défini, mais uniquement pour ce calque particulier.