2014-02-18 43 views
0

我有一个UiViewController,其中我有一个UIScrollView的宽度和高度为768X3000。在UIScrollView内部,我有一个视图,其宽度和高度均为768X1024。UIScrollView不滚动在iPAD

我对如何实现UIScrollView完全困惑。我的scrollView不起作用。我有很多内容要显示在UIView和UIScroll不向下滚动。

我必须做什么连接或设置才能使UIScrollView正常工作。

+0

myScrollView.contentSize = CGSizeMake(768,3000);它你需要什么 – Pawan

+0

我也试过。它仍然无法正常工作。我相信我们必须让IBOutlet连接到UIScrollView上吗?我也是这样做的。在我的viewDidLoad中,我写了这3行。 [self.scroll setDelegate:self]; [self.scroll setScrollEnabled:YES]; self.scroll.contentSize = CGSizeMake(768.0f,3000.0f); – user2903572

回答

2

您需要将UIScrollView的contentSize属性设置为768 x 3000,而不是其框架或边界。因此,在viewWillAppear中,你可以添加代码来设置滚动视图的contentSize:

self.scrollView.contentSize = CGSizeMake(768.0f, 3000.0f); 
+0

我也试过。它仍然无法正常工作。我相信我们必须让IBOutlet连接到UIScrollView上吗?我也是这样做的。在我的viewDidLoad中,我写了这3行。 [self.scroll setDelegate:self]; [self.scroll setScrollEnabled:YES]; self.scroll.contentSize = CGSizeMake(768.0f,3000.0f); – user2903572

+0

@ user2903572除非您计划响应委托方法调用,否则不需要设置委托。通过单击滚动视图并使用Attributes Inspector检查它的属性,仔细检查在Interface Builder中是否启用了滚动。如果在Interface Builder中设置,则必须具有IBOutlet连接。否则,您无法设置其contentSize。 – Steve

2

1 viewDidLoad中是很快。您必须等到视图布局发生之后。尝试在viewDidAppear中设置contentSize。

-(void)viewDidAppear:(BOOL)animated{ 

    myScrollView.contentSize = CGSizeMake(768, 3000); 

} 

2-另一个提示您可以在viewDidLayoutSubviews设置contentSize:

3-设置你的滚动型的代表

myScrollView.delegate=self; 

//如果你需要委托方法

4-如果在您正确设置contentSize后仍然无法滚动视图,请确保取消选中“使用AutoLayou t“在Interface Builder - > File Inspector中。 Reference

+0

我的scrollView可以工作,但我在parentView上添加了子视图。所以滚动工作在屏幕的前半部分,并从那里添加子视图的部分scrollView不起作用。 – user2903572

+0

添加子视图后,您应该检查滚动视图的内容大小。 – Pawan

0

如果您在Xcode 5中使用故事板并为自动布局开发,那么您需要使用一些约束(以我的经验)。首先,把你的意见出来是这样的:

  • 主视图
    • 滚动视图
      • 内容视图(把所有你想在这个滚动的东西查看)

然后做在故事板编辑器的顺序如下:

  1. 设置内容画面高度3000宽度应该是768
  2. 设置滚动视图高度1024宽度应该是768.
  3. 如果在自由形式的大小或使用推断的大小,将主视图高度设置为1024。宽度应为768.

在执行下一步之前,只需仔细检查每个视图的高度以确保没有任何更改。故事板编辑器有时会自行进行奇怪的更改。

  1. 仅设置内容视图的高度限制。它应该设置为3000.
  2. 将内容视图的顶部,底部,右侧和左侧固定到滚动视图,每个边使用0。您必须手动将底部约束从负数更改为0.这非常重要,因此我会重复它:手动将底部约束更改为0.
  3. 将顶部,底部,右侧和对于每个边使用0来将滚动视图的左侧移动到主视图。

现在它应该滚动。如果您希望在更改为水平方向时保持居中,则还应在内容视图中添加水平中心约束。

我在我的iPad应用程序中有许多滚动视图,如果我在故事板编辑器中以这种方式构建了我的视图,则不需要使用.contentSize代码。

祝你好运!我知道这可能是一种绝对的痛苦和时间浪费。

+0

我的scrollView可以工作,但我在父视图中添加了子视图。所以滚动工作在屏幕的前半部分,并从那里添加子视图的部分scrollView不起作用。 – user2903572

+0

我认为这是因为您需要为scrollview下的主子视图设置高度约束(这将包含所有其他子视图)。这是我上面称之为“内容视图”的那个。一定要在3000处设置一个高度约束。像我上面解释的那样构建一个全新的视图控制器,看看它是否有效。然后你可以比较你所得到的并找到问题。 – Kent