CGRectMake в Objective-C - PullRequest
       3

CGRectMake в Objective-C

14 голосов
/ 12 апреля 2011

Я использую 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, если я этого не уточнил.

Ответы [ 2 ]

13 голосов
/ 12 апреля 2011

enter image description here

0 голосов
/ 12 апреля 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...