故事板UIScrollView contentSize?

时间:2013-04-02 20:32:53

标签: iphone objective-c ipad uiscrollview storyboard

我觉得我已经触及了阻止这个的每一个可能的原因,但是我的故事板中有一个UIScrollView连接了一个插座,在viewDidLoad中我设置了contentSize以便我可以滚动(是的比我的框架大大小)!

然而,无论我改变什么,我都无法滚动!我的滚动视图中有几个文本字段并且启用了弹跳,因此我可以看到在使用我的子视图测试其上下移动时,但无论我将contentSize设置为什么,我都无法滚动。

我可能遗失的任何东西/应该检查?这是UIScrollView在故事板中使用的已知问题吗?

甚至更奇怪的是,我可以这样做: [scrollView setBackgroundColor:[UIColor blueColor]];我有一个蓝色滚动视图!但是设置内容大小失败。

修改

我唯一的代码(否则scrollview只是放入了故事板视图控制器):

-(void)viewDidAppear:(BOOL)animated
{
    [scrollView setContentSize:CGSizeMake(320, 640)];
}

记录帧,按预期出现:

width: 320.00
height: 504.00

编辑2

原来在我的故事板中删除滚动视图的任何子视图让它滚动得很好。如果我通过故事板添加任何子视图,即使是空白的全新UIButton,它也不会应用contentSize / allow滚动。

8 个答案:

答案 0 :(得分:47)

使用ViewDidLayoutSubview

- (void)viewDidLayoutSubviews
{
    [_scrollView setContentSize:CGSizeMake(320, 500)];
}

UIViewController的方法调用顺序如下

  • awakeFromNib
  • viewDidLoad中
  • viewWillAppear中
  • viewWillLayoutSubviews
  • viewDidLayoutSubviews
  • viewDidAppear

答案 1 :(得分:5)

viewDidLoad不是放置依赖于IB对象的帧大小的代码的好地方。如果在viewDidLoad中记录滚动视图的contentSize,您将看到它是(0,0)。将代码(您设置内容大小的位置)移动到viewDidAppear,它将正常工作。

答案 2 :(得分:4)

检查这些

  • 已启用用户互动
  • 连接插座
  • 包含的内容大于界限
  • 滚动已启用

例如

scrollView.contentSize = CGSizeMake(320, 640);

我的故事板对于scrollview [working]

看起来像这样

enter image description here

答案 3 :(得分:3)

我在 viewDidAppear 中有完全相同的代码行,没有工作

将其移至 viewDidLayoutSubviews 正常工作

[scrollView setContentSize:CGSizeMake(320, 500)];

感谢trick14的答案。

答案 4 :(得分:3)

问题很可能出在Auto Layout上。使用AutoLayout时,UIScrollView需要特别注意。

快速修复 - 将其中一个滚动的子视图绑定到其超级视图的顶部和底部空间(滚动视图)。

长篇故事: 有关SO的问题: UIScrollView not scrolling regardless of large contentSizeUIScrollView will not scroll, even after content size setUIScrollView doesn't use autolayout constraints

Apple的文档: https://developer.apple.com/library/ios/technotes/tn2154/_index.html

答案 5 :(得分:1)

Trip14的回答对我有用。在swift中,我把它编码为:

override func viewDidLayoutSubviews() {

          (self.view as! UIScrollView).contentSize = CGSizeMake(600, 600)
        }

答案 6 :(得分:0)

这似乎是一个类似的问题。 Other Story

故事板中的自动布局或约束可能存在问题。

答案 7 :(得分:0)

使用情节提要的最佳方式。

follow the picture ,best way