【问题标题】:Very odd UIView position issue非常奇怪的 UIView 位置问题
【发布时间】:2013-09-01 12:06:58
【问题描述】:

在向 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。真的被这个给难住了……

【问题讨论】:

  • 很可能是未指定的自动布局约束的结果。
  • viewWillAppear:viewDidLayoutSubviews 中使用此代码吗?
  • @DavidH 不,不使用自动布局。

标签: iphone ios objective-c uiview uiscrollview


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-08-26
    • 1970-01-01
    • 2013-02-07
    • 1970-01-01
    • 2012-07-30
    • 1970-01-01
    • 2012-06-17
    • 1970-01-01
    相关资源
    最近更新 更多