我对 uiscrollview 进行了分类,并使用 initWithCoder 为我的 uiscrollview 准备了所有子视图。我使用下面的代码来设置它:
- (id)initWithCoder:(NSCoder *)aDecoder {
if ((self = [super initWithCoder:aDecoder])) {
NSLog(@"%f", self.frame.size.height);
self.contentSize = CGSizeMake(5000, self.frame.size.height);
labelContainerView = [[UIView alloc] init];
labelContainerView.frame = CGRectMake(0, 0, self.contentSize.width, self.contentSize.height/2);
labelContainerView.backgroundColor = [UIColor yellowColor];
[self addSubview:labelContainerView];
}
但这一直失败,因为 self.frame 属性总是返回 0 值。使用self.frame属性对我来说非常重要,因为我想使用情节提要对滚动视图的框架进行任何高度调整。
我使用 xib 文件而不是使用情节提要尝试了同样的事情,它工作正常。但在我的项目中,我不想使用 xib 文件。
如果有人能解释我为什么在使用情节提要时在 initWithCoder: 方法中得到 0 值,那就太好了?如果使用情节提要如何实现这一目标?
PS:我注意到layoutSubviews方法返回正确的帧信息,但我无法在这里创建我的子视图,因为每次帧更改都会调用它(当我滚动时)