2011-04-12 56 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