我有一个现有的iPad应用程序(纵向模式),我试图在XCode中添加横向模式。我已经能够在第一个简单的视图上做到这一点,下面通过将XCode中的类更改为UIScrollView并且UIView在它下面排成一行(我相信UIView是由XCode添加的,但不确定')。滚动视图在横向模式下完美运行。
当我尝试对下一个场景做同样的事情时,它将不允许我再次更改顺序,如下图所示;我不确定为什么它不允许同样的事情:
有什么想法吗?还有另一种方法可以实现这个目标吗?
更新 下面是显示在UIVIewController中插入UIScrollView的位置的图像(Book Details是UIViewController; Book Detail View是UIView):
答案 0 :(得分:3)
在第二个控制器上这样做:
1.从UIView
场景中删除主UIViewController
,然后,
2.在其上添加UIScrollView
。
3.将UIView
添加为UIScrollView
子视图。
您将获得完美的顺序和所需的结果,就像在第一个场景中一样。 在您的情况下,选择底部布局指南下的视图,按退格键,在该书详细信息上拖放UIScrollView。欢呼声。
答案 1 :(得分:1)
navigation bar
始终位于高度为44px
的顶部,20px
的顶部空间(顶部20px
用于状态栏,即充电,网络等图标您在你的设备中看到)。 原因后面修复navigation bar
最重要的是,无论用户在VC中的哪个位置,您总是必须向他显示当时他在哪个VC,否则您的应用质量可能会要低(我说可能)。毕竟,您可以在navigation Bar
中添加UIScrollView
作为您的选择。
您看到的顶级绿色视图,我只是将视图作为statusBar
高度20px
来显示差异。
现在在UIScrollView
的其余部分添加ViewController
并提供以下约束:
0px
0
。现在您的VC如下所示。红点表示您可以约束缺失。不要担心,除非UIScrollView
内的组件未正确设置,否则会显示相同的错误。
现在在您的UIView
中添加UIScrollView
(表示为viewMain)并给出这样的约束
scrollview
为0
viewVC
的宽度相等。 viewVC
是VC的观点。当你采用新的UIViewController
时,你会得到这个观点。现在您的用户界面就像并且您的视图层次结构将类似于
这里我假设您只是在垂直方向上滚动视图而不是在水平方向滚动。
现在我要在scrollview
中添加5个不同身高的视图,请查看。
在viewMain
中添加一个视图(表示为viewYellow)并在下面给出约束;
mainView
为0px
180px
现在您的用户界面就像
现在与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.前导mainView
为0px
和3. 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
但是每个视图都有恒定的高度,所以旋转高度会相同。
<强>肖像强>
<强>风景强>
答案 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
的内容大小