1

私は通常の動作ではないこの奇妙な問題に直面しています。WebビューのURLから画像を読み込んでいます。向きを縦向きから横向きに、横向きから縦向きに変更しても問題ありません。しかし、縦向きでズームイン、ズームアウト、画像をダブルタップして画面に合わせると、今横向きに変更すると、右側に白/黒の画面が表示されていることがわかります。

私はこの問題についてグーグルで検索しました。不透明なプロパティ、クリアカラーなど、さまざまな方法を試しました。これを解決するために独自の方法を試しましたが、失敗しました。問題を解決する方法は?

4

1 に答える 1

2

私も同じ問題に直面したため、これを投稿しています。その問題も修正しました。コードは次のとおりです。以下は、問題を解決できるコード全体です。すべてのコードを適切に配置する必要があります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;
   }

YES を返すと、同時認識が可能になることが保証されます。他のジェスチャのデリゲートが YES を返す可能性があるため、NO を返すと同時認識が防止されるとは限りません。

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

ユーザーがピンチイン/ピンチアウトした場合、その場合の Web ビューは、ズーム係数を設定するだけです。そのため、WebView は、Oreintaion の変更に応じて ContentSize を調整できます。

    - (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 を歪めても完全に機能します。

于 2012-11-09T11:19:53.923 に答える