2

在向 UIScrollView 添加内容时,我遇到了一个奇怪的问题。

下面是调用相同方法的结果。左边的那个是从 viewDidLoad 调用的结果。右边的一个是从自定义方法调用的,该方法在触摸标签时触发。

在此处输入图像描述

代码非常简单:

    CGRect scrollRect = CGRectMake(0, 64, 320, [[UIScreen mainScreen] bounds].size.height - 49);
    _containerView = [[UIScrollView alloc] initWithFrame:scrollRect];
    _containerView.backgroundColor = [UIColor clearColor];

    UILabel *myLabel = [[UILabel alloc] initWithFrame:CGRectMake(10, 5, 300, 40)];
    myLabel.text = @"my label";
    myLabel.textColor = [super colorFromHexString:0x472C37];
    myLabel.numberOfLines = 0;
    [myLabel sizeToFit];
    y_offset += myLabel.frame.size.height;
    [_containerView addSubview:myLabel];
    [self.view addSubView:_containerView];

我检查了父级(self.view),它的坐标总是0,0。真的被这个给难住了……

4

1 回答 1

2

viewDidLoad您的子视图中,组件尚未完全初始化,因此如果您使用其中一些的框架,您将得到不希望的结果。viewDidLayoutSubviews可能是您正在寻找的。这是完全初始化所有子视图框架的方法。

尝试在此方法中调用您的代码,您应该得到与单击按钮时相同的结果。

-(void)viewDidLayoutSubviews
{
    [super viewDidLayoutSubviews];
    [self setupView];
}
于 2013-09-01T14:53:03.633 回答