UIScrollView的不会滚动!

问题描述 投票:17回答:9

在IB我有我的UIView。然后,我有一子的UIView有一个UIScrollView的子视图。然后UIScrollView中有子的UIImageView。该UIScrollView中和的UIImageView的大小相同。他们比的UIView它们所在的子视图更大。我认为这会使滚动工作。事实并非如此。是否需要某种形式的代码滚动视图工作?

iphone interface-builder ios4 uiscrollview
9个回答
29
投票

您需要设置UIScrollView.contentSize相匹配的总滚动的大小,也就是在这种情况下,你的子视图帧大小。


12
投票

作为接受的答案提到的,你必须设置UIScrollViewcontentSize财产。

这可以在Interface Builder来完成。

  1. 选择滚动视图
  2. 选择在工具面板中的身份检查“右边
  3. 在“用户自定义属性运行”点击“+”按钮
  4. 设置“关键路径”值“contentSize”
  5. 设置“类型”值“大小”
  6. 设置为 '{宽度,高度}' 的 '值' 的值(例如: '{320,600}')

建立和运行,滚动视图将滚动。

内容插图不影响滚动。见What's the UIScrollView contentInset property for?


6
投票

要滚动,你必须做出滚动视图的框架不是它的内容,所包含的图像或视图小。


4
投票

这可能是显而易见的大多数,但我花了年龄想知道为什么我的UIScrollView不会滚动,所以我张贴什么阻止我的情况下,它可以帮助别人:

该UIScrollView的必须是要在其中它的可视面积的大小来呈现,而不是它的大小的内容。

阿勇代表我,我知道,只是在情况下,它可以帮助别人。


2
投票

我把我在IB滚动视图的所有内容。 (按钮,标签,文本框等)。全尺寸是500高。我则调整为436多高的IB。

然后在代码中,我把这个viewDidLoad中:

optionsScrollView.contentSize = CGSizeMake(320,500);

使叶片64个像素,我可以滚动。它完美的作品。

我还放着“UIScrollViewDelegate”在@interface的<>括号为我的.h文件,并追平了滚动型的代表出口,以文件的所有者在IB。


1
投票

更多的,你能滚动?看看属性

@property(nonatomic, getter=isScrollEnabled) BOOL scrollEnabled

1
投票

我没有看到这里提到的其他重要的事情是,UIScrollView中不会自动版式发挥很好。如果它看起来像你已经正确地做了一切,请检查您的ViewController具有自动布局打开,如果是这样,将其关闭。

(每次滚动的时候,意见正在重新布局的。GAK!)

所以:

  • 确保滚动型的contentSize比它更大的frame.size
  • 确保AutoLayout的视图控制器被关闭。

0
投票

滚动视图的工作原理与此: 帧 然后 contentSize 观点或物体等... 如果你的框架设置为内容的大小,那么它不会滚动。因此请设置帧(在IB右侧面板 - >倒数第二个选项卡“尺寸检查“)将应用程序的长度(在我的情况下,它是367,因为我有一个导航栏和标签栏),然后编程设置contentSize至 - 烨你猜对了......比你多帧,因此它可以滚动。

快乐的时光!!


0
投票

我可以解决以下答案滚动问题:

https://stackoverflow.com/a/39945124/5056173

通过我的诀窍是:

  1. 现在,您需要设置内容的UIView的高度。然后,可以指定所述内容的视图(BLECH)的高度或使用通过确保底部的控制被限制在内容视图的底部内包含的控制的高度。

我已经设置了滚动内部视图的高度和宽度与中心垂直和水平对齐方式,那就是原因,为什么它没有工作!

删除这个约束后,我需要添加相等宽度(滚动视图和滚动视图内的视图),并且我直接与内容设定的视线的高度的滚动视图的内部。这意味着:在视图中的最后一个元素必须有一个底部约束的观点!

© www.soinside.com 2019 - 2024. All rights reserved.