【问题标题】:How do I rotate the contents of a UIWebView?如何旋转 UIWebView 的内容?
【发布时间】:2010-01-13 13:28:30
【问题描述】:

我使用 Web 视图制作了一个非常简单的 Web 浏览器应用程序。现在我需要获取应用程序,以便当 iPhone 旋转时,页面的文本也会旋转。

我该怎么做?

我对自动调整大小对话框感到非常困惑,所以我可能在那里做错了什么。

任何帮助将不胜感激!

【问题讨论】:

  • 你能指定吗?您是否希望 WebView 的内容自动旋转,以便在用户转动手机时内容保持正面朝上?或者您是否希望内容随手机旋转,以便用户可以将内容翻转到侧面、上下颠倒等。我无法从您的问题中看出您的意思。

标签: objective-c cocoa-touch ios uiwebview


【解决方案1】:

我认为您应该旋转 UIWebView 小部件,而不是其内容。内容也应该旋转。要支持旋转,请将以下代码添加到您的视图控制器:

- (BOOL)shouldAutorotateToInterfaceOrientation:
    (UIInterfaceOrientation)interfaceOrientation { 
        return YES;
}

旋转的小部件可能看起来与预期不同。在 Interface Builder 中调整支柱和弹簧。

【讨论】:

  • 我已经做到了,文本保持纵向显示什么是支柱和弹簧?我真的无法理解界面生成器中的自动调整大小框
  • UIWebView 是 UIView 而不是 UIViewController 子类,并且不会发送 shouldAutorotate
【解决方案2】:

我认为您需要给我们一些示例代码,以确定哪里出了问题。正如 Jacek 所说,您唯一需要做的就是支持 UIWebView 本身的自动旋转。内容应自动旋转。

【讨论】:

    【解决方案3】:

    我认为您对设备方向和视图框架感到困惑。

    在大多数情况下,UIView 会随着方向的变化而变化。但要澄清一下 - 这不是因为方向变化,而是因为布局变化。

    只有 UIViewControllers 需要考虑设备方向 - UIViews 不需要。当设备方向改变时,UIViewController 从它的实例方法中捕获事件:

    – willRotateToInterfaceOrientation:duration:
    – willAnimateRotationToInterfaceOrientation:duration:
    – didRotateFromInterfaceOrientation:
    

    UIViewController 然后重新布局视图 - 导致 UIViews 的重新框架。在许多情况下,iOS 可以通过设置 UIViewAutoresizeMask 来帮助您简化重新布局过程。例如:

    myWebview.autoresizeMask = UIVIewAutoresizeMaskFlexibleHeight | UIVIewAutoresizeMaskFlexibleHeight;
    

    暗示当webview的superview改变它的边界时,webview也会随之改变。

    总而言之,UIView 只处理它的框架/边界等。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-04-04
      • 2014-03-16
      • 1970-01-01
      • 2011-11-10
      • 1970-01-01
      • 2012-03-23
      • 2011-09-29
      • 1970-01-01
      相关资源
      最近更新 更多