UIWebView在景观视图的右侧加载了一些黑屏



我面临着这个怪异的问题,而不是正常行为。我正在从Web视图中的URL加载图像。如果我将方向从肖像和景观和景观更改为肖像没有问题。但是在肖像中,如果我进行了一些缩放,放大并双击图像以适合屏幕,那么如果我现在更改为景观,我可以看到右侧有白色/黑屏。

我已经搜索了这个问题,我尝试了多种不透明属性,透明颜色等的方式。即使我尝试了自己的方法来解决此问题,但我失败了。如何解决问题?

我发布了此信息,因为我也遇到了同样的问题,我也解决了该问题,我的代码如下。下面是可以解决该问题的整个代码。正确将所有代码放入ViewControler

为此,我设置了捏手势,以便用户偏斜时UIwebView可以检查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;
   }

返回是可以同时识别。由于另一个手势的代表可以返回是

,因此不能保证返回否可以防止同时认可
 -(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);
  }

如果用户hase捏入/删除在这种情况下的Web视图,则设置该缩放因子。 因此,随着Oreintaion的更改,WebView可以调整其内容。

    - (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;
     }
     }
     }

这甚至适用于用户偏向UIWebView。

最新更新