2009-09-16 7 views
5

Je me demande quel est le moyen de griser une partie d'une vue similaire à la façon dont UIAlertView grise tout sauf la boîte de message? En ce moment j'utilise une autre vue personnalisée au-dessus de la zone cible, mais il ne semble pas aussi bien.Grey out dans l'iphone, comment?

Des idées?

Répondre

8

J'obtiens de bons résultats en utilisant la méthode que vous avez déjà essayée. Peut-être que bidouiller avec l'alpha est une bonne idée?

mask = [[UIView alloc] initWithFrame:window.frame]; 
[mask setBackgroundColor:[UIColor colorWithWhite:0.0 alpha:0.78]]; 
[self.view addSubview:mask]; 

plus tard dans votre code, vous pouvez le supprimer:

[mask removeFromSuperview]; 
or 
[mask setHidden:YES]; 

Si vous voulez faire encore mieux, je suppose que vous pouvez essayer d'utiliser un dégradé, soit par programme, ou sous forme d'image, et en utilisant ceci pour obscurcir les bords de l'écran de sorte que le contenu que vous affichez en avant semble être la source de lumière.

+0

C'est exactement ce que j'ai fait, avec alpha –

+0

Votre réponse est bonne mais dans ce cas toutes les autres sous-vues ne seront plus interactives. –