6

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

另外,有点相关,是否可以自定义情节提要中的子视图以在此滚动视图中使用?除非它已经在控制器中,否则我似乎无法创建这样的视图。由于我只有一个控制器,并且可能有多个视图,我想以图形方式设置,我该如何做到这一点而不必以编程方式这样做?

4

5 回答 5

16

使用故事板viewDidLayoutSubviews可以获取所有视图的大小。viewWillAppear对我不起作用并且总是返回 (0,0,0,0);

于 2013-01-10T19:00:13.183 回答
3

使用情节提要,控制器的出口在 viewDidLoad 之前未连接,并且直到 viewWillAppear 才设置其大小,请参见此处:

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

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

所以我认为 Enricos 的建议是正确的。只需尝试将与大小相关的内容放入 viewWillAppear。

于 2012-10-15T21:38:23.657 回答
1

我发现当我访问 中的滚动视图时viewWillAppear,框架实际上会给出正确的数字。我以前试过这个,awakeFromNibviewDidLoad得到了0,0,0,0框架。

奇怪的是,在 Storyboard 之前,您可以在 awakeFromNib 中获得正确的框架尺寸。这方面的一个例子是 Apple 的示例代码PageControl之一。

所以简而言之,要回答这个问题,请尝试从viewWillAppear(假设您在 Storyboard 中创建 UIScrollView)访问它。

于 2012-10-10T02:37:49.697 回答
0

这很简单:在情节提要设置中禁用使用自动布局。

在情节提要设置中禁用使用自动布局(红色矩形)

于 2013-08-09T06:55:41.033 回答
0

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

- (id)initWithCoder:(NSCoder *)coder
{
    self = [super initWithCoder:coder];
    if (self) {
        CGRect frame = self.scrollView.frame;
        NSLog (@"FRAME IS %@", NSStringFromCGRect(frame));
    }
    return self;
}
于 2012-10-10T02:09:58.577 回答