非常奇怪的UIView位置问题

时间:2013-09-01 12:06:58

标签: iphone ios objective-c uiview uiscrollview

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

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

enter image description here

代码很简单:

    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。真的被这个难过......

1 个答案:

答案 0 :(得分:2)

viewDidLoad中,您的subViews组件尚未完全初始化,因此如果您使用其中某些组件的框架,则会得到不希望的结果。 viewDidLayoutSubviews可能就是你要找的东西。这是完全初始化所有子视图帧的方法。

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

-(void)viewDidLayoutSubviews
{
    [super viewDidLayoutSubviews];
    [self setupView];
}