2012-11-09 3 views
1

Je suis confronté à ce problème étrange pas dans un comportement normal. Je charge les images d'une URL dans la vue Web. Si je change l'orientation du portrait au paysage et du paysage au portrait sans problème. Mais en portrait Si je fais un zoom avant, un zoom arrière et double tap l'image pour s'adapter à l'écran, puis si je change en paysage maintenant, je peux voir qu'il ya un écran blanc/noir qui vient dans le côté droit. J'ai cherché sur ce problème, j'ai essayé de nombreuses façons, comme la propriété opaque, la couleur claire, etc. Même si j'ai essayé de résoudre ce problème, j'ai échoué. Comment résoudre le problème?UIWebView chargement de certains écran noir dans le côté droit de la vue Paysage

+0

Hey 'Cyril' cela arrive parce que le contenu ne s'ajuste pas correctement. Vous avez donc besoin de réajuster le contenu de UIWebView. Voir ma réponse ci-dessous.Voir ma réponse avec soin dans ma réponse j'ai pris soin de chaque aspect. – Kamarshad

+0

Ya @Kamarshad. Je vérifie votre code seulement. Je vous le ferai savoir – Cyril

Répondre

2

Je publie cela parce que j'ai également fait face au même problème, j'ai résolu ce problème aussi et mon code est comme ci-dessous.Voici ci-dessous le code entier qui peut résoudre le problème.Need Pour mettre correctement le code ALI dans ViewControler

pour cela, je mis la Gesture Pinch de sorte que lorsque l'utilisateur biaiser le UIwebView pourrait vérifier la taille de Scaled UIwebView.

 //One This Please import The `UIGestureRecognizerDelegate` Protocol in '.h file' 

    //call below method in ViewDidLoad Method for setting the Pinch gesture 

    - (void)setPinchgesture 
    { 
    UIPinchGestureRecognizer * pinchgesture = [[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(didPinchWebView:)]; 

    [pinchgesture setDelegate:self]; 

    [htmlWebView addGestureRecognizer:pinchgesture]; 
    [pinchgesture release]; 
    // here htmlWebView is WebView user zoomingIn/Out 

    } 

//Allow The allow simultaneous recognition 

    - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer 
    { 
    return YES; 
    } 

OUI retour est garanti pour permettre la reconnaissance simultanée. NO retour est pas garanti pour empêcher la reconnaissance simultanée, comme l'autre délégué geste peut retourner OUI

-(void)didPinchWebView:(UIPinchGestureRecognizer*)gestsure 
    { 
    //check if the Scaled Fator is same is normal scaling factor the allow set Flag True. 
    if(gestsure.scale<=1.0) 
    { 
    isPinchOut = TRUE; 

    } 
    else// otherwise Set false 
    { 
    isPinchOut = FALSE; 
    } 
    NSLog(@"Hello Pinch %f",gestsure.scale); 
    } 

Si l'utilisateur Hase Pincez In/Out The View Web dans ce cas qui se trouve juste que le facteur Zooming. SO que WebView peut ajuster son ContentSize en tant qu'Oreintaion modifié.

- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration { 

    //Allow the Execution of below code when user has Skewed the UIWebView and Adjust the Content Size of UiwebView. 

    if(isPinchOut){ 
    CGFloat ratioAspect = htmlWebView.bounds.size.width/htmlWebView.bounds.size.height; 
    switch (toInterfaceOrientation) { 
    case UIInterfaceOrientationPortraitUpsideDown: 
    case UIInterfaceOrientationPortrait: 
     // Going to Portrait mode 
     for (UIScrollView *scroll in [htmlWebView subviews]) { //we get the scrollview 
      // Make sure it really is a scroll view and reset the zoom scale. 
      if ([scroll respondsToSelector:@selector(setZoomScale:)]){ 
       scroll.minimumZoomScale = scroll.minimumZoomScale/ratioAspect; 
       scroll.maximumZoomScale = scroll.maximumZoomScale/ratioAspect; 
       [scroll setZoomScale:(scroll.zoomScale/ratioAspect) animated:YES]; 
      } 
     } 
     break; 

    default: 
     // Going to Landscape mode 
     for (UIScrollView *scroll in [htmlWebView subviews]) { //we get the scrollview 
      // Make sure it really is a scroll view and reset the zoom scale. 
      if ([scroll respondsToSelector:@selector(setZoomScale:)]){ 
       scroll.minimumZoomScale = scroll.minimumZoomScale *ratioAspect; 
       scroll.maximumZoomScale = scroll.maximumZoomScale *ratioAspect; 
       [scroll setZoomScale:(scroll.zoomScale*ratioAspect) animated:YES]; 
      } 
     } 
     break; 
    } 
    } 

    } 

Cela fonctionne parfaitement pour même utilisateur biaiser les UIWebView.

+0

Merci Kamarshad. Le code fonctionne bien. Mais vous savez quoi, ce problème d'écran noir se pose à la fois pour Pinch-in et Pinch-out. Donc, je vais rendre cette variable BOOLEAN vraie chaque fois que le geste Pinch est reconnu. Merci beaucoup encore – Cyril

+0

@Cyril Je suis sûr que ce code fonctionne bien, vous avez juste besoin de mettre clairement ce code. Cet écran blanc essentiellement afficher lorsque vous fausser le WebView et le même temps que vous modifiez l'orientation du périphérique. – Kamarshad

Questions connexes