在故事板创建滚动型与帧0,0,0,0初始化(ScrollView created in storyb

2019-06-25 14:27发布

我在故事板创建一个UIScrollView,链接它作为一个属性视图控制器,并且现在想与分页添加一些子视图。 但是,即使我设定的尺寸故事板图形,在UIScrollView中的帧最终被0,0,0,0。 我是否需要硬编码的尺寸,即使我已经在故事板图形指定他们?

此外,一种相关的,是它可以自定义子视图在故事板在这个滚动视图使用? 看来我不能创造这样的观点,除非它已经是一个控制器内。 因为我只有一个控制器,我想建立图形可能多个视图,我怎么做到这一点,而无需编程这样做?

Answer 1:

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



Answer 2:

故事板控制器的出口viewDidLoad中之前没有连接,它的大小没有设置直到viewWillAppear中,在这里看到:

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

一旦控制器完全实例及其网点都迷上了viewDidLoad中:被调用。 因此,这是把初始化代码的好地方。 然而控制器的尺寸并没有被设定,但在viewWillAppear中:这就是所谓之前出现在屏幕上的视图。

所以我觉得Enricos建议是正确的。 刚刚尝试把大小相关的东西进入viewWillAppear中。



Answer 3:

我发现,当我在访问滚动视图viewWillAppear ,该框架将实际给予正确的数字。 我以前在尝试这个awakeFromNibviewDidLoad ,得到了0,0,0,0帧为好。

什么是奇怪的是故事板之前,你都能够得到正确的帧尺寸awakeFromNib。 这方面的一个例子是苹果公司的代码示例之一的PageControl 。

因此,在短期回答这个问题,尝试访问该viewWillAppear (假设您创建故事板的UIScrollView)。



Answer 4:

你可能设置在一条线上,其中的观点是不是还设置断点。 试试这个:

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


Answer 5:

这是很简单:禁止使用自动布局在故事板的设置。



文章来源: ScrollView created in storyboard initialized with frame 0,0,0,0