无法使用XCode 8将UIVcrollView上方的UIVcrollView插入到另一个场景中

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

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

有任何想法吗? 还有另一种方法来实现这一目标吗?

更新下面是显示尝试在UIVIewController中插入UIScrollView的位置的图像(Book Details是UIViewController; Book Detail View是UIView):

在此处输入图像描述

在第二个控制器上这样做:1。从UIViewController场景中删除主UIView ,然后,2。在它上面添加一个UIScrollView 。 3.将UIView添加为UIScrollView子视图。

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

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

如何处理SCROLLVIEW

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

修复navigation bar顶部的原因是,无论用户在VC中的哪个位置,您总是必须向他显示他当时在哪个VC,否则您的应用质量可能会降低(我说可能是)。 毕竟你可以在UIScrollView添加navigation Bar作为你的选择。

你看到的顶级绿色视图,我只是将视图作为高度为20pxstatusBar来显示差异。

在此处输入图像描述

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

    • top to navgationBar 0px
    • 领先,尾随,底部到superview为0

现在你的VC就像下面一样。 红点表示您可以约束缺失。 不要担心,直到UIScrollView的组件未正确设置它才会显示相同的错误。

在此处输入图像描述

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

    • top,bottom,leading,trailing to scrollview0
    • viewVC宽度viewVCviewVC是VC的视图。 当你使用新的UIViewController时,你会得到这个视图。 现在你的用户界面就像

在此处输入图像描述

你的视图层次结构就像

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

在此处输入图像描述

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

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

    • 顶部,导致mainView0px
    • 身高180px

在此处输入图像描述

现在你的用户界面就像

在此处输入图像描述

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

      • viewGreen : to viewYellow 0px 2. leading to mainView as 0px and 3. height 150px
      • viewBlue : to viewGreen 0px 2.引导尾随到mainView0px和3. height 80px
      • viewBlue : to viewGreen 0px 2.引导尾随到mainView0px和3. height 80px
      • viewRed : to viewBlue 0px 2.引导尾随到mainView0px和3. height 140px
      • viewPurple : to viewRed 0px 2.引导尾随到mainView0px和3. height 128px 。 4.从底部到mainView 0px

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

在此处输入图像描述

在此处输入图像描述

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

在此处输入图像描述

注意: UIViewController没有约束错误和警告,因为正如我准备好的那样,当您使用约束约束正确设置scrollView内部组件时,错误将被解决。

重要: 如何计算ScrollView高度

当您将具有top,bottom和height约束的每个视图的约束设置为mainViewmainView高度计算如下

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

scrollView高度将按如下方式计算:

 scrollView.height = mainView.height 

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

最终产出

肖像

在此处输入图像描述

景观

在此处输入图像描述

在此处输入图像描述

这些答案都没有解决改变现有应用程序的问题,所以我请求Apple技术支持。 他们也没有解决它,而是给了我一些文档来看。 @Aragunz可能是最接近的,因为它表明它是XCode 8中的问题。我唯一的选择是从头开始重写故事板,保存现有的类。

在故事板中选择Book Details UIViewController ,然后选择根视图。 删除它,然后将UIScrollView拖放到UIViewController 。 您的根视图现在应该是UIScrollView

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

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

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