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

时间:2017-01-31 17:38:43

标签: ios uiview uiscrollview xcode8.2

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

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

有什么想法吗?还有另一种方法可以实现这个目标吗?

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

enter image description here

4 个答案:

答案 0 :(得分:3)

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

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

这是结果: enter image description here

答案 1 :(得分:1)

如何处理SCROLLVIEW

  1. 您的navigation bar始终位于高度为44px的顶部,20px的顶部空间(顶部20px用于状态栏,即充电,网络等图标您在你的设备中看到)。
  2. 原因后面修复navigation bar最重要的是,无论用户在VC中的哪个位置,您总是必须向他显示当时他在哪个VC,否则您的应用质量可能会要低(我说可能)。毕竟,您可以在navigation Bar中添加UIScrollView作为您的选择。

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

    enter image description here

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

      • top to navgationBar 0px
      • 领先,尾随,底部以超级视图0
    2. 现在您的VC如下所示。红点表示您可以约束缺失。不要担心,除非UIScrollView内的组件未正确设置,否则会显示相同的错误。

      enter image description here

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

        • 顶部,底部,前导,后跟scrollview0
        • 与您viewVC的宽度相等。 viewVC是VC的观点。当你采用新的UIViewController时,你会得到这个观点。现在您的用户界面就像
      2. enter image description here

        并且您的视图层次结构将类似于

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

        enter image description here

        1. 现在我要在scrollview中添加5个不同身高的视图,请查看。

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

          • 顶部,前导mainView0px
          • 身高180px
        3. enter image description here

          现在您的用户界面就像

          enter image description here

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

              • viewGreen : 1.在viewYellow 0px之前2.领先于mainView 0px和3. 150px
              • viewBlue : 1.在viewGreen 0px之前2.领先于mainView 0px和3. 80px
              • viewBlue : 1.在viewGreen 0px之前2.领先于mainView 0px和3. 80px
              • viewRed : 1.在viewBlue 0px之前2.领先于mainView 0px和3. 140px
              • viewPurple : 1.返回viewRed 0px 2.前导mainView0px和3. 128px。 4.到mainView 0px
              • 的底部
          2. 现在您的UI和视图层次结构将如下所示

            enter image description here

            enter image description here

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

            enter image description here

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

            重要提示: 计算ScrollView高度的方式

            当您将具有上限,下限和高度约束的每个视图的约束设置为mainView时,mainView高度计算如下公式

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

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

            scrollView.height = mainView.height
            

            但是每个视图都有恒定的高度,所以旋转高度会相同。

            最终输出

            <强>肖像

            enter image description here

            <强>风景

            enter image description here

            enter image description here

答案 2 :(得分:1)

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

答案 3 :(得分:-1)

在故事板中选择书籍详细信息 UIViewController,然后选择根视图。删除它,然后将UIScrollView拖放到UIViewController。您的根视图现在应该是UIScrollView

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

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

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