CGRectMake в 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)];
   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) 

То, что я вижу в ячейке, - это метка слева, с помощью textField сразу справа. Между ними есть небольшое пространство.

Я ожидал бы, что координаты X, Y будут относиться к 0,0-точке в верхнем левом углу ячейки, а положительные значения - вниз и вправо.

Я смущен тем, что вижу.

Я вижу, что метка расположена слева от моей ячейки, но имеет значение X больше значения X текстового поля. TextField начинается справа от метки.

Я не понимаю, почему значение ширины для каждого из них равно 0 (ноль).

Кроме того, что делает textField занимать позицию относительно метки, а не относительно координат ячейки.

Вот простой эскиз ячейки и то, что я вижу в ней (с установленными цветами фона, я могу четко видеть, где размещаются объекты CGR):

0,0---------------------------------------------------------------------------------
|                                                                                   |
|   ----------------    -----------------------------------------------------------------
|  |                |  |    
|  |  label         |  |   textField 
|  |                |  |    
|   ----------------    -----------------------------------------------------------------
|                                                                                   |
------------------------------------------------------------------------------------

Я также замечаю, что ширина каждой метки меняется в зависимости от ее длины содержимого. Я понимаю это, но я не понимаю, почему textField перемещается, оставаясь на одинаковом расстоянии от метки в каждом случае.

[edit] Кстати, "self" является подклассом UITableViewCell, если я этого не делал.

Ответы

Ответ 1

enter image description here

Ответ 2

В представлении таблицы метки и текстовые поля печатаются под панелью навигации. более четко ниже панели вкладок, он начинает вызывать значения x и y. то есть ниже tar bar это указывает (0,0)