UIScrollView不会滚动!

时间:2010-11-25 00:49:39

标签: iphone interface-builder ios4 uiscrollview

在IB中我有我的UIView。然后我有一个子UIView,UIScrollView作为子视图。然后UIScrollView有一个子UIImageView。 UIScrollView和UIImageView的大小相同。它们比它们是子视图的UIView大得多。我认为这会使滚动工作。它没有。滚动视图是否需要某种代码才能工作?

10 个答案:

答案 0 :(得分:29)

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

答案 1 :(得分:12)

如接受的答案中所述,您必须设置UIScrollView的{​​{1}}属性。

这可以在Interface Builder中完成。

  1. 选择滚动视图
  2. 在右侧的“工具”窗格中选择“身份检查”
  3. 在“用户定义的运行时属性”下,点击“+”按钮
  4. 将“关键路径”值设置为“contentSize”
  5. 将“类型”值设置为“尺寸”
  6. 将'Value'值设置为'{width,height}'(例如:'{320,600}')
  7. 构建并运行,滚动视图将滚动。

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

答案 2 :(得分:6)

要滚动,您必须使scrollview的框架小于其内容,包含的图像或视图。

答案 3 :(得分:4)

这对大多数人来说可能是显而易见的,但我花了很多时间想知道为什么我的UIScrollView不会滚动所以我发布阻止我的内容,以防其他人帮助:

UIScrollView必须是您希望在其中显示的可见区域的尺寸,而不是其内容的大小。

我知道,我知道这是荒谬的,但万一它可以帮助某人。

答案 4 :(得分:2)

我将我的scrollview的所有内容都放在了IB中。 (按钮,标签,文本字段等)。全尺寸为500高。 然后我把它重新调整为IB中的436。

然后在代码中,我把它放在viewDidLoad:

optionsScrollView.contentSize = CGSizeMake(320,500);

因此,我可以滚动64像素。它完美地运作。

我还在<>中放置了“UIScrollViewDelegate” @interface的大括号用于我的.h文件,并将scrollview的代理插座绑定到IB的文件所有者。

答案 5 :(得分:1)

更多,您是否启用了滚动功能? 看看物业

@property(nonatomic, getter=isScrollEnabled) BOOL scrollEnabled

答案 6 :(得分:1)

我在这里提到的另一个重要的事情是,UIScrollView与AutoLayout不能很好地配合。如果您似乎已正确完成所有操作,请检查您的ViewController是否已打开自动布局,如果是,请将其关闭。

(每次滚动时,视图都会被重新布局.Gak!)

所以:

  • 确保scrollview的contentSize大于frame.size
  • 确保ViewController的AutoLayout已关闭。

答案 7 :(得分:0)

滚动视图适用于此:
框架
然后
contentSize
观点或对象等...

如果您的框架设置为您的内容大小,则它不会滚动。 因此,将您的框架(在IB右侧面板 - >第二个最后一个标签'尺寸检查器中)设置为您的应用程序的长度(在我的情况下,它是367,因为我有一个导航栏和标签栏)然后以编程方式将contentSize设置为 - 是的,你猜对了......比你的框架还要滚动。

快乐的日子!!

答案 8 :(得分:0)

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

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

对我来说,诀窍是:

  
      
  1. 您现在需要设置内容UIView的高度。然后,您可以指定内容视图的高度(漂白),也可以使用   确保底部的控件高度   控件被限制在内容视图的底部。
  2.   

我在滚动视图内设置了视图的高度和宽度,并设置了垂直和水平居中对齐,这就是为什么它不起作用!

删除此约束后,我需要添加等宽(scrollView和scrollView内部的视图) AND ,我设置高度带有内容的滚动视图直接。这意味着:视图中的最后一个元素必须对视图具有底部约束!

答案 9 :(得分:0)

确定

  1. 检查scrollView框架和contentView框架,您可能会找到答案
  2. scrollView.isScrollEnabled = true
  3. scrollView高度的contentView不受滚动视图高度的限制