Lorsque Uialertviews apparaît, il y a un effet de vignette à l'arrière-plan. C'est-à-dire que les bords sont plus sombres et le centre est plus léger. p>
p>
Je me demandais si cet effet de vignette a été intégré à Cocoa Touch. Je voudrais montrer la vignette derrière une de mes vues personnalisées. P>
5 Réponses :
It est em> intégré à Uikit (comme UialertView fait partie de Uikit), mais ce n'est pas public. Il ne devrait pas être trop difficile de créer le même effet, cependant. C'est juste un gradient radial, que vous pouvez dessiner dans le code ou Photoshop. P> update: stry> si vous devez em> DO EM> sais, l'arrière-plan est une classe appelée < Code> _UialertNormalizingOverLayWindow code> avec la hiérarchie de la classe suivante: p>
L'application ne sera-t-elle pas rejetée pour l'utilisation de produits sans papiers?
En fait, cet effet est atteint par une image supplémentaire - une fenêtre séparée avec une vue d'écran est affichée sous une vue uialertview. Cette fenêtre le fait pour que vous ne puissiez ni choisir ni toucher d'autres points de vue. Si vous voulez que cette image puisse être trouvée à droite ici < / a> p>
Je sais comment faire manuellement moi-même, mais je me demandais si cela est fourni par le système. C'est un peu comme comment tout le monde peut reproduire Uiswitch, mais ce n'est pas une bonne idée de le faire, car comme vous l'avez vu de iOS 4 à 5, ils ont changé le style d'Uiswitch.
Je doute que Uikit utilise une image pour cela.
Je vous garantissons que cela fait, en fait, je suis sûr à 100%;). Oui il n'y a pas de manière publique que je sache, mais vous pouvez certainement regarder dans des méthodes privées
@Danzimm s'avère que vous avez eu raison de l'image. 4 Fichiers nommés Spotlight * .png dans Springboard.app. Mais l'image que vous avez liée ne semble pas être l'une d'entre elles.
Celui que j'ai lié à est une ancienne version que je crois, elle a été renommée
svprogresshud fait ce type d'effet, examine le code où SvProgresshudmasktypegradient est détaillé. P >
Je conteste la réponse choisie n'est pas correcte et est potentiellement dangereuse. Voici ma solution:
Créer une classe appelée Ajouter ce code à votre Vigneteeffect code> en tant que sous-classe de
uiview code>
-Drawrect: Code> Méthode: P >
- (void)drawRect:(CGRect)rect
{
CGContextRef context = UIGraphicsGetCurrentContext();
CGColorSpaceRef colSp = CGColorSpaceCreateDeviceRGB();
CGGradientRef gradient = CGGradientCreateWithColors(colSp, (__bridge CFArrayRef)[NSArray arrayWithObjects:(id)[[UIColor colorWithRed:0 green:0 blue:0 alpha:0] CGColor], (id)[[UIColor colorWithRed:0 green:0 blue:0 alpha:0.5] CGColor], nil], 0);
CGContextDrawRadialGradient(context, gradient, self.center, 0, self.center, self.frame.size.height+self.frame.size.height/4, 0);
CGColorSpaceRelease(colSp);
CGGradientRelease(gradient);
}
C'est une belle solution, mais c'est lent. Je recommanderais d'aller avec une image prérogée.
@Leonatan True, mais en termes de personnalisation, il s'agit d'une solution plus appropriée.
Belle solution de goutte pour moi. Merci!
Je me suis demandé ça aussi! La plupart des applications qui affichent des alertes personnalisées ou des icônes HUD giftent simplement sur une superposition noire transparente solide qui a l'air vraiment mauvaise.
Vous pourriez probablement juste faire cela en utilisant une boîte à encadrement, je suis un développeur Web, c'est donc tout ce que je peux vraiment dire
@James Kyle: Ce n'est pas un site web. C'est une application.
ouais je sais, mais tu ne peux pas utiliser CSS sur iOS
Pas en dehors d'une vision Web, laquelle la plupart des applications ne le sont pas.
github.com/jdg/mbprogresshud fait cet effet.