Swift - 在容器视图中嵌入一个长UIView

时间:2017-04-21 23:27:32

标签: ios swift storyboard uicontainerview

整体描述。

enter image description here

我有一个应用程序,我想要包含一个水平很长的视图。我曾尝试简单地使用UIScrollView或UIPageView等选项,但由于我的代码有非常具体的原因,我已经决定以编程方式移动图像最简单。

我的主要目标在这里。 。

一旦我将这个长视图包含在主视图控制器中(在我上面的屏幕截图的顶部),我将使用代码简单地向左移动所有内容。例如:

UIView.animate(withDuration: 0.25) {
        self.page1Label.transform =
        self.page1Label.transform.translatedBy(x: -375.0, y: 0.0)
        self.page2Label.transform =
        self.page2Label.transform.translatedBy(x: -375.0, y: 0.0)
        ...
}

只有当我能够在非常宽的视图中包含所有内容时,才有可能。我希望将所有内容保留在故事板中,而不需要任何代码。但我需要的是能够将底视图控制器(具有所有颜色)设置为内部上部视图控制器。我在上部视图控制器中插入了一个容器视图,因为这是我假设我需要的,但我不知道。

我当前解决方案的问题

当我在上面的屏幕宽度容器视图中包含那个非常宽,彩色的视图控制器时,它不保持彩色视图的原始宽度。相反,它将它嵌入到它所嵌入的容器视图的大小中。所以我真的需要它才能成为一个超越iPhone屏幕界限的广阔视野。

2 个答案:

答案 0 :(得分:0)

我只会使用启用了分页的scrollview。你将不得不根据设备宽度调整宽度,但是如果你想用变换来做(这将搞砸你所做的任何触摸处理,因为变换是在自动布局后应用的,不建议你使用它们对于尺寸和定位 - 它们用于短暂的动画)然后您需要做的是使您的容器视图与其包含的东西一样大。现在,彩虹视图被挤压到容器的宽度,恰好是一个屏幕宽度。如果它应该是5个屏幕宽度删除你现有的宽度约束并添加一个等于超视图宽度的5倍,这将导致它运行视图控制器的右边缘,这实际上是你想要的。

答案 1 :(得分:0)

您可以在启用分页的情况下使用scrollview。 这里给你一个小例子。

1)First Simulated Size = Freeform。

  • 这里是Viewcontroller宽度1125(375 * 3)。你可以用你的尺寸。

这是屏幕截图显示模拟大小和Viewcontroller宽度

enter image description here

2)在Viewcontroller中添加ScrollView。

  • 启用分页

这是截图显示ScrollView和启用分页。

enter image description here

您必须使用普通的ScrollView和分页编码。 让我知道你可以提供更多帮助。

注意:使用ScrollView和Paging时,动画是正常的分页动画。所以你想要一些动画,而不是你可以用编程方式管理。让我知道你对这个答案不满意。我会给你更多细节也可以用更多细节编辑你的问题。