WebView如何锁定水平滚动?

时间:2014-04-06 12:16:03

标签: ios uiwebview

我只是想让WebView全屏而不能横向滚动。无论是纵向还是横向,我都希望这样。

我是iOS的新手,我不知道它是如何工作的我觉得故事板和xib与android的xmls相比非常混乱。当我打开src代码时,它是相当多的代码,我无法弄明白。

2 个答案:

答案 0 :(得分:0)

让我说明一种方法。考虑这个未经测试的伪代码。

@implementation MyViewController

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)orientation
{
   CGSize contentSize = self.webView.scrollView.contentSize;

   switch (orientation) {
      case UIInterfaceOrientationPortrait:
        contentSize.width = 320.0;
        self.webView.scrollView.contentSize = contentSize;
        return YES;

      case UIInterfaceOrientationLandscapeLeft:
      case UIInterfaceOrientationLandscapeRight:
        contentSize.height = 568.0;
        self.webView.scrollView.contentSize = contentSize;
        return YES;
   }

   return NO;
}

@end

这里的想法是当底层滚动视图的内容大小适合滚动should not be possible的屏幕尺寸时。此代码对方向更改(转动设备时)作出反应,并将边长调整为各自的屏幕尺寸。

此问题的一个问题是设备必须至少转动一次,并且在向两个方向转动手机后,contentSize将锁定在{320, 568}。要解决此问题,请考虑this SO

答案 1 :(得分:0)

您可以在界面构建器中,勾选Web视图的“Scales Page To Fit”复选框,这将确保UIWebView通过缩小其大小来适应iPhone / iPad屏幕上的内容,从而基本上无需滚动水平。

或者您可以执行以下操作:由于UIWebView包含在UIScrollView中,因此您可以使用此SO链接中描述的方法禁用此UIScrollView的滚动:How to disable horizontal scrolling of UIScrollView? 您可以通过调用webview.scrollView

来访问WebView的scrollview