0

语境

  • 这是堆栈UIViewController中的一个UINavigationController
  • 在此UIViewController我以UILabel编程方式在 (0,0) 的 (x,y) 坐标处添加一个
  • 我已经尝试添加UILabel到 self.view (这是在 UIViewController 中)或添加UILabel到 a UIView,这UIView是 self.containerView

self.containerView通过以下代码创建并添加到视图中:

- (void)addContainerView
{
    // Create a UIView with same frame as the screen bounds
    CGRect containerViewFrame = [[UIScreen mainScreen] applicationFrame];
    self.containerView = [[UIView alloc] initWithFrame:containerViewFrame];

    // Give the UIView a red background
    self.containerView.backgroundColor = [UIColor redColor];

    // Add the view
    [self.view addSubview:self.containerView];
}

通过以下UILabel代码添加:

- (void)addTestLabel
{
    self.navigationController.navigationBarHidden = YES;
    CGRect frame = CGRectMake(0, 0, 100, 100);
    UILabel *label = [[UILabel alloc] initWithFrame:frame];
    label.text = @"this is a test";
    [self.view addSubview:label]; // OR [self.containerView addSubview:label]
}

在此处输入图像描述

何时UILabel添加到self.view

在此处输入图像描述

何时UILabel添加到self.containerView

问题

  • 为什么不在UILabel屏幕顶部,甚至在状态栏后面?
  • 为什么有区别yPos,取决于它是添加到self.view还是self.containerView
4

1 回答 1

5

更改标签的背景颜色,我想你会看到发生了什么。标签的高度为 100 像素,并且在该空间内垂直居中。将高度更改为 20 或 30,然后再试一次。

于 2013-08-20T21:54:27.440 回答