在Storyboard中创build的ScrollView,使用0,0,0,0帧进行初始化

我在故事板中创build了一个UIScrollView,将它作为一个属性链接到视图控制器,现在我正在尝试添加一些分页子视图。 但是,即使我以graphics方式设置故事板中的尺寸,UIScrollView的框架最终为0,0,0,0。 即使我已经在故事板中以graphics方式指定了尺寸,我是否需要对这些尺寸进行硬编码?

此外,有关的一种,是否可以自定义故事板中的子视图在这个滚动视图中使用? 看来,我不能创造这样的观点,除非它已经在一个控制器内。 由于我只有一个控制器,可能有多个视图,我想以graphics方式进行设置,所以如何以编程方式执行此操作?

与故事板viewDidLayoutSubviews是你可以得到所有的意见的大小。 viewWillAppear没有为我工作,总是返回(0,0,0,0);

在故事板中,控制器的插口在viewDidLoad之前没有连接,并且它的大小在viewWillAppear之前没有设置,请参见:

http://cs193p.m2m.at/lecture-8/

一旦控制器完全实例化,并且它的sockets被连接起来,viewDidLoad:被调用。 因此这是放置设置代码的好地方。 然而,控制器的大小还没有设置,但在viewWillAppear:这是在视图出现在屏幕之前调用。

所以我认为Enricos的build议是正确的。 试着把大小相关的东西放到viewWillAppear中。

我发现,当我访问viewWillAppear的滚动视图时,框架实际上会给出正确的数字。 我以前在awakeFromNibviewDidLoad试过,并且获得了0,0,0,0帧。

有什么奇怪的是在Storyboard之前,你可以在awakeFromNib中获得正确的框架尺寸。 其中的一个例子就是Apple的示例代码PageControl 。

所以简而言之,回答这个问题,试着从viewWillAppear (假设你在Storyboard中创build了UIScrollView)访问它。

您可能在尚未设置视图的行上设置断点。 尝试这个:

 - (id)initWithCoder:(NSCoder *)coder { self = [super initWithCoder:coder]; if (self) { CGRect frame = self.scrollView.frame; NSLog (@"FRAME IS %@", NSStringFromCGRect(frame)); } return self; } 

这很简单:在故事板设置中禁用使用Autolayout

在故事板设置中禁用使用Autolayout(红色矩形)