在将内容添加到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。真的被这个难过......
答案 0 :(得分:2)
在viewDidLoad
中,您的subViews组件尚未完全初始化,因此如果您使用其中某些组件的框架,则会得到不希望的结果。 viewDidLayoutSubviews
可能就是你要找的东西。这是完全初始化所有子视图帧的方法。
尝试在此方法中调用您的代码,您应该获得与单击按钮时相同的结果。
-(void)viewDidLayoutSubviews
{
[super viewDidLayoutSubviews];
[self setupView];
}