将内容添加到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。真的为此感到难过...

最佳答案

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

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

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

关于iphone - 非常奇怪的UIView位置问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18558279/

10-12 14:43
查看更多