无法使用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
- 您的
navigation bar
始终位于顶部,高度为44px
,顶部空间为20px
(前20px
用于状态栏,即您在设备中看到的充电,网络等图标)。
修复navigation bar
顶部的原因是,无论用户在VC中的哪个位置,您总是必须向他显示他当时在哪个VC,否则您的应用质量可能会降低(我说可能是)。 毕竟你可以在UIScrollView
添加navigation Bar
作为你的选择。
你看到的顶级绿色视图,我只是将视图作为高度为20px
的statusBar
来显示差异。
-
现在在
ViewController
的其余部分添加UIScrollView
并给出以下约束:- top to navgationBar
0px
- 领先,尾随,底部到superview为
0
。
- top to navgationBar
现在你的VC就像下面一样。 红点表示您可以约束缺失。 不要担心,直到UIScrollView
的组件未正确设置它才会显示相同的错误。
-
现在在
UIScrollView
添加一个UIView
(表示viewMain)并给出这样的约束- top,bottom,leading,trailing to
scrollview
为0
-
viewVC
宽度viewVC
。viewVC
是VC的视图。 当你使用新的UIViewController
时,你会得到这个视图。 现在你的用户界面就像
- top,bottom,leading,trailing to
你的视图层次结构就像
在这里我假设你只是在垂直方向滚动你的视图而不是水平方向。
-
现在我要在
scrollview
添加5个不同高度的scrollview
检查它。 -
在
viewMain
添加一个视图(表示viewYellow)并在下面给出约束;- 顶部,导致
mainView
为0px
- 身高
180px
- 顶部,导致
现在你的用户界面就像
-
现在与
step 4
相同,再添加四个视图(viewGreen,viewBlue,viewRed,viewPurple)并给出如下约束-
-
viewGreen :
toviewYellow
0px
2. leading tomainView
as0px
and 3. height150px
。
-
-
-
viewBlue :
toviewGreen
0px
2.引导尾随到mainView
为0px
和3. height80px
。
-
-
-
viewBlue :
toviewGreen
0px
2.引导尾随到mainView
为0px
和3. height80px
。
-
-
-
viewRed :
toviewBlue
0px
2.引导尾随到mainView
为0px
和3. height140px
。
-
-
-
viewPurple :
toviewRed
0px
2.引导尾随到mainView
为0px
和3. height128px
。 4.从底部到mainView
0px
。
-
-
现在您的UI和视图层次结构如下所示
不要担心viewPurple
因为它很少出现在UI
但在层次结构中可用。 它是scrollView
,非常安全。 看到
注意: UIViewController
没有约束错误和警告,因为正如我准备好的那样,当您使用约束约束正确设置scrollView
内部组件时,错误将被解决。
重要: 如何计算ScrollView高度
当您将具有top,bottom和height约束的每个视图的约束设置为mainView
, mainView
高度计算如下
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
的内容大小