Objective-C中的CGRectMake

Jim*_*Jim 14 objective-c

我正在使用CGRectMake在UITableViewCell内部生成标签和textField.这是代码:

   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
Run Code Online (Sandbox Code Playgroud)

首先,我的理解是将参数定义为

  CGRectMake(x, y, width, height) 
Run Code Online (Sandbox Code Playgroud)

我在单元格中看到的是左侧的标签,右侧是textField.两者之间有一个小空间.

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

我对所见所闻感到困惑.

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

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

此外,是什么使textField采取相对于标签的位置,而不是相对于单元格坐标.

这是一个简单的单元格草图和我在其中看到的内容(设置了背景颜色,我可以清楚地看到CGRects的放置位置):

0,0---------------------------------------------------------------------------------
|                                                                                   |
|   ----------------    -----------------------------------------------------------------
|  |                |  |    
|  |  label         |  |   textField 
|  |                |  |    
|   ----------------    -----------------------------------------------------------------
|                                                                                   |
------------------------------------------------------------------------------------
Run Code Online (Sandbox Code Playgroud)

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

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

Ara*_*han 13

在此输入图像描述

  • 自四月以来我已经走了很长一段路,我对此情况了解得更好.所有的定位都是通过我所指的应用程序中的其他代码完成的,但是当我问这个问题时我没有看到它.CGRectMake完全按照文档中的描述工作,并且没有更多的谜团. (3认同)