Objective-C中的CGRectMake

Objective-C中的CGRectMake,objective-c,Objective C,我正在使用CGRectMake在UITableViewCell中生成标签和文本字段。代码如下: label = [[UILabel alloc] initWithFrame:CGRectMake(20, 10, 0, 20)]; label.backgroundColor = [UIColor redColor]; textField = [[UITextField alloc] initWithFrame:CGRectMake(0, 10, 0, 20

我正在使用CGRectMake在UITableViewCell中生成标签和文本字段。代码如下:

   label = [[UILabel alloc] initWithFrame:CGRectMake(20, 10, 0, 20)];
   label.backgroundColor = [UIColor redColor];      

   textField =
     [[UITextField alloc] initWithFrame:CGRectMake(0, 10, 0, 20)];
   textField.backgroundColor = [UIColor blueColor];

  [textField setDelegate:self]; // set the delegate to this object
  [textField addTarget:self action:@selector(textFieldDidEndOnExit)
      forControlEvents:UIControlEventEditingDidEndOnExit];

  [self.contentView addSubview:label]; // add label to the cell
  [self.contentView addSubview:textField]; // add textField to cell
首先,我的理解是,参数定义为

  CGRectMake(x, y, width, height) 
我在单元格中看到的是左侧的标签,文本字段紧靠其右侧。两者之间有一个小空间

我希望X,Y坐标相对于单元格左上角的0,0点,正值向下和向右移动

我被我看到的东西弄糊涂了

我看到标签位于单元格的左侧,但它的X值大于textField的X值。文本字段从标签的右侧开始

我不明白为什么每个的宽度值都设置为0(零)

此外,是什么使textField相对于标签而不是相对于单元格坐标占据位置

下面是一个简单的单元格草图,以及我在其中看到的内容(设置了背景色后,我可以清楚地看到CGRECT放置的位置):

我还注意到,每个标签的宽度根据其内容长度而变化。我明白这一点,但我不明白为什么文本字段会四处移动,在每种情况下都与标签保持相同的距离


[编辑]顺便说一句,“self”是UITableViewCell的一个子类,如果我没有说清楚的话。

在表格视图中,标签和文本框打印在导航栏下方。更清楚的是,在选项卡栏下方,它只开始显示x和y值。在tar条下面,它指向(0,0)

我想你的意思是
[cell.contentView addSubview:label]相反,不是吗。为什么你说你不明白为什么每个宽度都设置为0,而你是将两个宽度都设置为0的人?尝试将其设置为非零值并更新。我不确定你的意思。在我的示例中没有提到选项卡栏。(如果有的话,标签栏会在屏幕的底部,在其他东西的下面。)谢谢你的尝试。我想现在你可以理解tableView的概念了。问题不是关于tableView的。问题是关于CGRectMake的行为。我的示例是指UITableViewCell,但我认为这可能与此无关。主要的问题是为什么宽度设置为零(这应该做什么)?当标签的x值大于文本字段的x值时,为什么标签的位置在左边?为什么将宽度设置为0?如果将其设置为0。答案不会是这样的。只会出现一行。然后x和y坐标仅从导航栏下方开始。。如果要在导航栏中添加按钮或标签,则表示您已看到UINavigationItem。。。自从四月以来,我已经走了很长的路,我对这一点有了更好的理解。所有的定位都是通过我所指的应用程序中的附加代码完成的,但当我问这个问题时,我没有看到它。CGRectMake的工作原理与文档中描述的完全相同,不再有任何神秘之处。
0,0---------------------------------------------------------------------------------
|                                                                                   |
|   ----------------    -----------------------------------------------------------------
|  |                |  |    
|  |  label         |  |   textField 
|  |                |  |    
|   ----------------    -----------------------------------------------------------------
|                                                                                   |
------------------------------------------------------------------------------------