4

我有一个现有的 iPad 应用程序(纵向模式),我试图在 XCode 中添加横向模式。我已经能够在第一个简单视图上做到这一点,如下所示,通过将 XCode 中的类更改为 UIScrollView 并且 UIView 落在它下方(我相信 UIView 是由 XCode 添加的,但不确定)。在横向模式下,滚动视图可以完美运行。

当我尝试对下一个场景做同样的事情时,它不允许我再次更改顺序,如下图所示;我不确定为什么它不允许同样的事情:

有任何想法吗?还有另一种方法可以做到这一点吗?

更新 这是显示尝试在 UIVIewController 中插入 UIScrollView 的位置的图像(书籍详细信息是 UIViewController;书籍详细信息视图是 UIView):

在此处输入图像描述

4

4 回答 4

3

在第二个控制器上执行此操作: 1.然后UIViewUIViewController场景中删除主要部分,2.UIScrollView在其顶部添加一个。3. 添加UIViewasUIScrollView子视图。

您将拥有完美的顺序和想要的结果,就像在第一个场景中一样。在您的情况下,选择底部布局指南下的视图,按退格键,将 UIScrollView 拖放到该图书详细信息上。干杯。

这是结果: 在此处输入图像描述

于 2017-02-05T01:44:07.720 回答
1

如何处理滚动视图

  1. navigation bar始终位于顶部,高度44px和顶部空间为20px(顶部20px用于状态栏,即您在设备中看到的充电、网络等图标)。

修复顶部的原因navigation bar是,无论用户在 VC 中,您始终必须向他展示当时他在哪个 VC 中,否则您的应用程序质量可能会降低(我说可能是)。毕竟,您可以添加您navigation BarUIScrollView选择。

您看到的顶部绿色视图,我只是将视图作为statusBar高度20px来显示差异。

在此处输入图像描述

  1. 现在添加UIScrollView其余部分ViewController并给出以下约束:

    • 顶部到导航栏0px
    • 前导、尾随、底部到超级视图为0.

现在你的 VC 如下所示。红点表示可以约束缺失。不要担心,直到您的组件内部UIScrollView设置不正确,它会显示相同的错误。

在此处输入图像描述

  1. 现在UIView在你的UIScrollView(说viewMain)中添加一个并给出这样的约束

    • 顶部、底部、前导、尾随scrollview0
    • 等宽给你viewVCviewVC是VC的观点。当你采取 new 时,你会得到这个视图UIViewController。现在你的用户界面会像

在此处输入图像描述

你的视图层次结构就像

在这里,我假设您只是在垂直方向而不是水平方向滚动视图。

在此处输入图像描述

  1. 现在我要添加 5 个不同高度的视图来scrollview检查它。

  2. viewMain在(说viewYellow)中添加一个视图并在下面给出约束;

    • 顶部,导致尾随mainView0px
    • 高度180px

在此处输入图像描述

现在你的用户界面会像

在此处输入图像描述

  1. 现在与step 4添加四个视图(viewGreen、viewBlue、viewRed、viewPurple)相同,并给出如下约束

      • viewGreen :1. top 到viewYellow 0px2.leading 到mainViewas0px和 3. height 150px
      • viewBlue :1. top 到viewGreen 0px2.leading 到mainViewas0px和 3. height 80px
      • viewBlue :1. top 到viewGreen 0px2.leading 到mainViewas0px和 3. height 80px
      • viewRed :1. top 到viewBlue 0px2.leading 到mainViewas0px和 3. height 140px
      • viewPurple :1. top 到viewRed 0px2.leading 到mainViewas0px和 3. height 128px。4.底部到mainView 0px

现在您的 UI 和视图层次结构将如下所示

在此处输入图像描述

在此处输入图像描述

不要担心,viewPurple因为它很少出现UI在层次结构中但可用。它是scrollView并且非常安全。看

在此处输入图像描述

注意:没有可用的约束错误和警告,UIViewController因为正如我已经说过的那样,当您scrollView正确设置内部组件时,约束错误将得到解决。

重要: 如何计算 ScrollView 高度

当您使用顶部、底部和高度约束设置每个视图的约束时,mainView因此mainView高度计算如下等式

mainView.height = viewYellow.top + viewYellow.height + .... for all view + viewPurple.bottom

scrollView高度将计算如下:

scrollView.height = mainView.height

然而,每个视图都有恒定的高度,因此旋转高度将相同。

最终输出

肖像

在此处输入图像描述

景观

在此处输入图像描述

在此处输入图像描述

于 2017-02-09T06:30:30.183 回答
1

没有一个答案解决了更改现有应用程序的问题,因此我请求了 Apple 技术支持。他们也没有解决它,而是给了我一些文档来查看。@Aragunz 可能是最接近 XCode 8 中的一个问题。我唯一的选择是从头开始重写情节提要,保存现有的类。

于 2017-02-09T18:04:39.757 回答
-1

在情节提要中选择Book Details UIViewController,然后选择根视图。删除它,然后将 a 拖放UIScrollView到您的UIViewController. 您的根视图现在应该是UIScrollView

注意:我个人更喜欢以下视图层次结构:

|---UIView
     |---UIScrollView
         |---UIView //(to act as a container)
              |---UIView
              |---UIView
              |---UIView
              |---UIView

允许您根据需要非常轻松地扩展应用程序,同时还允许 autoLayout 非常轻松地管理设置您的内容大小UIScrollView

于 2017-01-31T19:04:02.190 回答