2010-02-10 1 views
12

J'utilise UIWebView pour afficher une page HTML simple. Lorsque je fais défiler la page (sur le dessus ou sur le bas) une ombre grise apparaît derrière !! Puis-je supprimer ou éviter ce mauvais effet?Comment supprimer l'ombre grise sur le dessus UIWebView en cas de surfacturation?

Thx

P.S. UIWebView, Voir le conteneur, sont tous d'arrière-plan clair et opaque NON!

+2

Pourquoi ont-ils mis cette ombre stupide et pas fourni un moyen d'enlever c'est au-delà de moi. –

Répondre

2

Ce n'est pas possible! Sur le web, il existe une solution qui utilise des méthodes de pomme privées (api & fonctions non documentées). Ainsi, Apple pourrait refuser votre application.

+1

Avez-vous essayé mon code? Je ne vois pas pourquoi Apple le nierait ou aurait un moyen de le détecter puisqu'il n'appelle pas d'apis privés. – Adolfo

+0

Votre solution est bonne! Je l'essaie tôt. Je referer à d'autres solutions fondées sur le Web .. :) – Undolog

+0

http://stackoverflow.com/questions/655225/uiwebview-underside – LolaRun

23

Les ombres sont de la classe UIImageView. Vous pouvez parcourir les vues de la première sous-vue de UIWebView et masquer les vues qui correspondent à UIImageView.

id scrollview = [webView.subviews objectAtIndex:0];  
for (UIView *subview in [scrollview subviews]) 
    if ([subview isKindOfClass:[UIImageView class]]) 
    subview.hidden = YES; 

Avertissement: la hiérarchie de vue pourrait changer à l'avenir et cela ne fonctionnerait pas causer l'ombre à revenir.

+0

Je mets votre code sur viewDidLoad, et ne fonctionne pas. – Momi

+0

[subview isKindOfClass: [UIImageView class]] serait plus correct, mais la réponse correcte est donnée par Undolog. –

+0

Merci, je l'ai mis à jour pour être "plus correct". :) – Adolfo

0

Mettez uiwebview sur uiscrollview et désactivez le défilement uiwebview.

+0

maintenant c'est une idée –

0

Vous pouvez le faire.

webView.backgroundColor = [UIColor clearColor]; et sortir une belle UIImageView à l'arrière-plan.

C'est simple et facile.

+0

l'ombre restera toujours –

5

Check this out a fonctionné pour moi ..

UIScrollView *scrollview = [webView.subviews objectAtIndex:0];
scrollview.bounces=NO;

+0

cette propriété est juste webView.scrollView et fait juste que vous ne pouvez pas faire défiler. Vous n'avez pas supprimé l'ombre ennuyante. –

0
for (id subview in _webView.subviews) 
      if ([[subview class] isSubclassOfClass: [UIScrollView class]]) { 
       for (UIView *scrollSubview in [subview subviews]) 
        if ([[scrollSubview class] isSubclassOfClass:[UIImageView class]]) 
         scrollSubview.hidden = YES; 
      } 

Cette solution ne sera pas rejetée.

4
for (UIView *view in self.webView.scrollView.subviews) { 
     if ([view isKindOfClass:[UIImageView class]]) { 
      view.hidden = YES; 
     } 
    } 

Pourquoi Apple serait rejeter cette méthode, il n'y a pas une partie non documentée et privé :) Vous trouverez une vue, vérifiez leur classe, et cachez ... Vous n'êtes pas supprimer ou réécrire les méthodes .. Vous n'avez pas modifié (réécrire) des parties d'objet ... seulement cacher, non?

+1

Je pense que c'est la meilleure solution! – Florian

0

Pour quiconque dans cette situation où le défilement n'est pas nécessaire, car tout votre contenu correspond, appeler la méthode sizeToFit sur l'UIWebView permettra d'éliminer ces ombres.

Questions connexes