2011-04-12 52 views
13

我正在使用CGRectMake在UITableViewCell中生成一個標籤和一個textField。下面是代碼:CGRectMake in Objective-C

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值。 textField從標籤的右側開始。

我不明白爲什麼每個的寬度值設置爲0(零)。

此外,什麼使textField相對於標籤而不是相對於單元座標。

這裏是小區和我看到在它(與背景顏色設置,我可以清楚地看到,其中CGRects被放置)什麼的一個簡單的草圖:

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

我還注意到,寬度每個標籤的內容長度因內容而異。我理解這一點,但我不明白爲什麼textField會四處移動,與標籤保持相同的距離。

順便說一句,「自我」是UITableViewCell的一個子類,如果我沒有說清楚的話。

+0

我想你的意思'[cell.contentView addSubview:標籤]'反而是吧。 – Robin 2011-04-12 04:56:20

+0

爲什麼你說你不明白爲什麼每個人的寬度都設置爲0,如果你是將寬度設置爲0的人?嘗試將其設置爲非零值並更新。 – 2011-04-13 02:11:12

回答

12

enter image description here

+1

我想現在你可以理解tableview的概念 – Aravindhan 2011-04-12 05:03:46

+0

問題不在於tableView。問題是關於CGRectMake的行爲。我的例子是指UITableViewCell,但我認爲這可能是不相關的。主要問題是爲什麼寬度設置爲零(應該做什麼)?爲什麼當x值大於textField的x值時,標籤在左邊的位置? – Jim 2011-04-12 14:00:40

+0

爲什麼你將寬度設置爲0?如果你將它設置爲0.答案不會像這樣。只是一條線會來。 – Aravindhan 2011-04-14 04:18:16

0

在表格視圖中,標籤和文本框打印在導航欄下方。更清楚地顯示在標籤欄之下,只有它開始註釋x和y值。即低於焦油欄指向(0,0)

+0

我不確定你的意思。我的例子中沒有提到標籤欄。 (如果有的話,標籤欄將位於屏幕的底部,低於其他所有內容。)感謝您的試用。 – Jim 2011-04-12 04:58:04

+0

對不起,是導航欄... – Aravindhan 2011-04-12 04:58:34