gpt4 book ai didi

uiscrollview - initWithCoder 返回框架属性 0 值

转载 作者:行者123 更新时间:2023-12-03 07:47:09 25 4
gpt4 key购买 nike

我对 uiscrollview 进行了子类化,并使用 initWithCoder 来准备带有所有 subview 的 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 属性对我来说非常重要,因为我想使用 Storyboard对 ScrollView 框架进行高度调整。

我尝试使用 xib 文件而不是使用 Storyboard进行相同的操作,并且效果很好。但在我的项目中我不想使用 xib 文件。

如果有人能解释一下为什么我在使用 Storyboard时在 initWithCoder: 方法中得到 0 值,那就太好了?如果使用 Storyboard如何实现这一点?

PS:我注意到 layoutSubviews 方法返回正确的帧信息,但我无法在此处创建 subview ,因为每次帧更改(当我滚动时)都会调用它

最佳答案

您在 Storyboard中使用自动版式吗?

如果你真的不利用它,你可以禁用它,你的 -initWithCoder: 方法将再次返回你的框架。

如果您确实需要自动布局,请尝试以下操作:

-(void)awakeFromNib
{
[super awakeFromNib];

[self setNeedsLayout];
[self layoutIfNeeded];

// self.frame will now return something :)
}

关于uiscrollview - initWithCoder 返回框架属性 0 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15252242/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com