Я использую CGRectMake для создания метки и textField внутри 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. TextField начинается справа от метки.
Я не понимаю, почему значение ширины для каждого установлено в 0 (ноль).
Кроме того, что заставляет textField занимать позицию относительно метки, а не относительно координат ячейки.
Вот простой эскиз ячейки и то, что я вижу в ней (с установленными цветами фона, я могу ясно видеть, где размещаются CGRects):
0,0---------------------------------------------------------------------------------
| |
| ---------------- -----------------------------------------------------------------
| | | |
| | label | | textField
| | | |
| ---------------- -----------------------------------------------------------------
| |
------------------------------------------------------------------------------------
Я также заметил, что ширина каждого ярлыка зависит от длины его содержимого. Я понимаю это, но не понимаю, почему textField перемещается, оставаясь на одинаковом расстоянии от метки в каждом случае.
[edit] Кстати, «self» - это подкласс UITableViewCell, если я этого не уточнил.