在IB中我有我的UIView。然后我有一个子UIView,UIScrollView作为子视图。然后UIScrollView有一个子UIImageView。 UIScrollView和UIImageView的大小相同。它们比它们是子视图的UIView大得多。我认为这会使滚动工作。它没有。滚动视图是否需要某种代码才能工作?
答案 0 :(得分:29)
您需要设置UIScrollView.contentSize
以匹配总可滚动大小,在这种情况下,这是您的子视图帧大小。
答案 1 :(得分:12)
如接受的答案中所述,您必须设置UIScrollView
的{{1}}属性。
这可以在Interface Builder中完成。
构建并运行,滚动视图将滚动。
内容插入不会影响滚动。见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!)
所以:
contentSize
大于frame.size
AutoLayout
已关闭。答案 7 :(得分:0)
滚动视图适用于此:
框架
然后
contentSize
观点或对象等...
如果您的框架设置为您的内容大小,则它不会滚动。
因此,将您的框架(在IB右侧面板 - >第二个最后一个标签'尺寸检查器中)设置为您的应用程序的长度(在我的情况下,它是367,因为我有一个导航栏和标签栏)然后以编程方式将contentSize设置为 - 是的,你猜对了......比你的框架还要滚动。
快乐的日子!!
答案 8 :(得分:0)
我可以通过以下答案解决滚动问题:
https://stackoverflow.com/a/39945124/5056173
对我来说,诀窍是:
- 您现在需要设置内容UIView的高度。然后,您可以指定内容视图的高度(漂白),也可以使用 确保底部的控件高度 控件被限制在内容视图的底部。
我在滚动视图内设置了视图的高度和宽度,并设置了垂直和水平居中对齐,这就是为什么它不起作用! >
删除此约束后,我需要添加等宽(scrollView和scrollView内部的视图) AND ,我设置高度带有内容的滚动视图直接。这意味着:视图中的最后一个元素必须对视图具有底部约束!
答案 9 :(得分:0)
确定