2

我有一个滚动视图,它有两个子视图(iPad)。视图层次结构如下:

-- UIScrollView
   -- UIView1
   -- UIView2

UIScrollView的frame是屏幕的大小,UIView1的frame也是屏幕的大小,但是UIView2的frame是(0,0,768,2000)。

滚动视图不会垂直滚动。根据苹果文档,滚动视图应该自动设置其内容大小。谁能帮我解决这个问题,为什么内容大小设置不正确?

P:S:当我在滚动视图中使用单个视图并设置适当的垂直约束时,它会正确滚动。

4

6 回答 6

2
  1. 在代码中使用滚动视图的 contentSize 属性。最好的方法是使用 'viewDidLayoutSubviews' 方法

    • (void)viewDidLayoutSubviews { [super viewDidLayoutSubviews]; _scrollView.contentSize = CGSizeMake(568, 594); }

2.始终使最低的内部视图和滚动视图之间的水平空间> = 0。自动布局会自动提出“-160”之类的建议,并且这个负空间不会滚动。

于 2014-10-09T05:51:50.797 回答
2

如果启用自动布局,则 Scrollview 不会滚动。从技术上讲,当您滚动时,滚动视图中的所有元素都会改变它们的位置。因此,如果您要固定滚动视图中元素的位置,请使用自动布局。

而是使用 UIView 作为滚动视图内的容器视图,其中包含所有其他对象,如按钮、标签、图像视图等。然后你就可以滚动了。

查看以下链接了解更多详情: https ://developer.apple.com/library/ios/technotes/tn2154/_index.html

在您的问题中尝试放置适当的内容大小值。还要检查是否启用了垂直滚动。

于 2013-10-08T09:58:08.440 回答
2

这个问题很老,但正确的答案是确保所有自动布局约束都已设置。

在垂直方向上,您应该有一些约束将 View1 固定到 Scroll View 顶部,另一个将 View2 固定到 Scroll View 底部,三分之一设置 View1 和 View2 之间的垂直空间。还要检查视图本身(View1 和 View2)是否有高度限制。

在水平方向上,将其中一个视图固定在前导和尾随空间中的滚动视图上,并将另一个视图左右固定到第一个视图(因此它们将具有相等的宽度)。

一旦所有这些都设置好,内容应该可以正确滚动。

于 2014-09-10T04:53:19.850 回答
0

如果内容大小大于滚动视图框架,则仅滚动视图滚动,否则不滚动。

于 2013-10-08T11:09:22.707 回答
0

要点:错误在设置'contentSize''UIScrollView',需要手动设置。

如您的问题所示

滚动视图框架 = 屏幕框架,
视图 1 框架 = 屏幕框架,

没关系但是

view 2 frame = (0,0,768,2000),然后它在第一个视图上重叠,因为您的 view2 x,y位置是(0,0),所以您的第一个视图可能不会显示。

如果您想在视图 2 之后垂直添加视图 1,那么您的视图 2 框架应该是

view2.frame = CGRectMake(0,view1.frame.origin.y + view1.frame.size.height , 768,2000);

在添加了两个视图之后,您需要管理contentSizeof UIScrollView,在您的情况下,例如

scrollView.contentSize = CGSizeMake(768, view1.frame.origin.y + view1.frame.size.height + 2000)

我提出了简单的逻辑,这可能对您的情况有所帮助:

于 2013-10-08T09:52:14.463 回答
0

与 AutoLayout 一起使用时如何自动启用滚动视图滚动:

请参阅以下链接,以帮助您正确修复它:

https://medium.com/@pradeep_chauhan/how-to-configure-a-uiscrollview-with-auto-layout-in-interface-builder-218dcb4022d7

上述帮助指南的问题: 哪个视图是父视图?滚动视图或滚动视图的父级?

答案: - ScrollView 的父级(赋予等于和等高以查看哪个是滚动视图的父级)

于 2018-06-22T14:02:50.490 回答