36 votes

Supprimer le fond dégradé de UIWebView?

Comment supprimer le dégradé d'un UIWebView - celui que vous voyez si vous survolez le haut ou le bas. Ce code

 webView.backgroundColor = [UIColor whiteColor];
 

change simplement la couleur du dégradé, cela ne le supprime pas. Comment cela peut-il être fait?

(note: pas la même question que http://stackoverflow.com/questions/655225/uiwebview-underside )

82voto

MrCranky Points 1146

Aha, oui la terminologie de l'échec. Je ne dirais pas qu'une ombre, mais c est la vie. Voici mon code de type sécurisé pour obtenir l'effet. Pour résumer: cela permet de masquer toute l'image de la vue des enfants de défilement de la vue. Ce n'est pas aussi vulnérables aux changements que l' (objectAtIndex:0) de méthodes, de sorte que si Apple de revoir l'ordre des enfants de la webView de contrôle, les beaux travaux, mais tout repose sur le fait que l'effet de gradient est appliqué par imageviews apparenté au défilement de la vue (et qu'il y a en effet une scrollview sous-tendent l'affichage sur le web).

{
    webView.backgroundColor = [UIColor whiteColor];
    for (UIView* subView in [webView subviews])
    {
        if ([subView isKindOfClass:[UIScrollView class]]) {
            for (UIView* shadowView in [subView subviews])
            {
                if ([shadowView isKindOfClass:[UIImageView class]]) {
                    [shadowView setHidden:YES];
                }
            }
        }
    }
}

3voto

damithH Points 956

Pour rendre transparent UIWebView et supprimer les parchemins.

  webView.opaque = NO;
 webView.backgroundColor = [UIColor clearColor];
 for(UIView *view in webView.subviews){      
      if ([view isKindOfClass:[UIImageView class]]) {
           // to transparent 
           [view removeFromSuperview];
      }
      if ([view isKindOfClass:[UIScrollView class]]) {
           UIScrollView *sView = (UIScrollView *)view;
           for (UIView* shadowView in [sView subviews]){
                //to remove shadow
                if ([shadowView isKindOfClass:[UIImageView class]]) {
                     [shadowView setHidden:YES];
                }
           }
      }
 }
 

pour masquer les indicateurs de défilement

2voto

Brian Points 10119

Tu veux dire l'ombre? Supprimer UIWebView Shadow?

1voto

cannyboy Points 8747

La seule façon dont j'ai trouvé comment faire cela était:

 for(UIView *aView in [[[webView subviews] objectAtIndex:0] subviews]) { 
        if([aView isKindOfClass:[UIImageView class]]) { aView.hidden = YES; } 
}
 

Il suffit de parcourir les sous-vues de UIWebView et de supprimer la vue s'il s'agit d'une vue d'image.

Je ne l'ai pas mise dans des applications de l'App Store, donc je ne sais pas si Apple l'accepterait.

EDIT: Le lien de Brian fournit plus de détails.

0voto

Roman B. Points 458

En utilisant la méthode suggérée ci-dessus, vous ne pourrez pas éditer votre indicateur de défilement / encarts plus tard. Ils apparaissent également sous le nom UIImageView. Vous devez donc vérifier le dernier objet:

             UIView* lastView = [[subView subviews] lastObject];
            for (UIView* shadowView in [subView subviews])
            { 
                if(shadowView!=lastView) ... <-this one is a scroll 
            }
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X