设置作为子视图的UIScrollView的contentSize

时间:2014-01-28 23:05:39

标签: ios objective-c uiscrollview contentsize

我有一个像这样的视图层次结构:

-First View Controller
  -View
    -ScrollView
      -TBD
    -ImageView

我正在尝试使用以下(来自apple docs)来设置ScrollView的内容大小:

UIScrollView *tempScrollView=(UIScrollView *)self.view;
tempScrollView.contentSize=CGSizeMake(320,1000);

但我收到错误:

Terminating app due to uncaught exception 'NSInvalidArgumentException'

如何修改以正确设置scrollView的contentSize?

3 个答案:

答案 0 :(得分:1)

问题是这个

self.view获取控制器的主要UIView,你的scrollView是self.view的子视图,要访问它,你需要一个IBOutlet。

首先,在viewControllers中创建IBOutlet .h

Create an IBOutlet for UIScrollView

然后在你的故事板中挂钩你的viewView,你将viewContoller放到IBoulet中。 单击scrollView - >一个正确的实用工具选项卡 - >光滑最右边的标签,它将有一个圆圈中的箭头 - >然后单击“引用插座”并将其拖到视图控制器上 - >它将为您提供选择scrollView或视图的选项。

Hook the IBoulet up

选择scrollView。

Select ScrollView

就是这样,现在您可以将代码更改为:

   self.scrollView.contentSize = CGSizeMake(320,1000);

答案 1 :(得分:0)

如果您使用自动布局,则需要设置约束,以便contentSize内的所有子视图设置约束,而不是设置scrollView的{​​{1}}。然后,您的scrollView将根据您的约束自动确定。

阅读this post了解详情。

答案 2 :(得分:0)

您的视图控制器视图不是滚动视图,因此发生异常。 可能的补救措施 1.将视图控制器视图类的自定义类更改为UIScrollView tnen,就像执行此操作一样 2。 将您的scrollview标记设置为1000,然后执行以下操作

UIScrollView *tempScrollView=(UIScrollView *)[self.view viewWithTag:1000];
tempScrollView.contentSize=CGSizeMake(320,1000);

1000不是强制性的,tou可以放任何整数,但是让你没有其它的观点或兄弟姐妹都有那个标记