将UIView添加到另一个UIView时,y位置不正确

时间:2012-01-10 15:30:45

标签: iphone ios uiview uidatepicker

我已使用以下代码向视图中添加了两个UIViewsself.view是我在导航控制器中的视图。

CGRect rect = [self.view bounds];
CGRect pickerFrame = CGRectMake(0, self.view.frame.size.height - 
                                       self.datePicker.frame.size.height - 44,
                                self.datePicker.frame.size.width,
                                self.datePicker.frame.size.height);
CGRect tableFrame = CGRectMake(0, 0, self.tView.frame.size.width, 
                               self.view.frame.size.height - 
                                   self.datePicker.frame.size.height);
[self.datePicker setFrame:pickerFrame];
[self.tView setFrame:tableFrame];

[self.view addSubview:self.tView];
[self.view addSubview:self.datePicker];

我预计,选择器低于tableView,但这不是结果。结果是两个对象之间有一个44像素的宽度条。是什么原因?我不明白这个问题。

3 个答案:

答案 0 :(得分:1)

如果要在tableview下面添加选择器,请先设置tableview框架,然后相应地设置选取器的Y位置。假设这是你的iPhone应用程序,你想添加一个表然后一个pickerview,那么你的代码将是这样的 -

CGRect tableFrame = CGRectMake(0, 0, self.tView.frame.size.width, (self.view.frame.size.height - self.datePicker.frame.size.height));

[self.tView setFrame:tableFrame];

然后将pickerview的框架设置为 -

CGRect pickerFrame = CGRectMake(0, self.tView.frame.size.height+2, self.datePicker.frame.size.width, self.datePicker.frame.size.height);
[self.datePicker setFrame:pickerFrame];

然后将这些对象添加到您的视图

[self.view addSubview:self.tView];
[self.view addSubview:self.datePicker];

由于

答案 1 :(得分:0)

选择器不能在tableView下,因为tableView使用

self.view.frame.size.height - self.datePicker.frame.size.height

as hight
而pickerview的y位置较小

self.view.frame.size.height - self.datePicker.frame.size.height -44

答案 2 :(得分:0)

(0, 0)位于左上角,而不是左下角。 当您说-44时,您指定的点数为44以上。

假设self.view 150像素高,self.datePicker 50像素高。

当你说:

CGRect pickerFrame = CGRectMake(0, self.view.frame.size.height - 
                                       self.datePicker.frame.size.height - 44,
                                self.datePicker.frame.size.width,
                                self.datePicker.frame.size.height);

pickerFrame.origin.y150 - 50 - 44 = 56

当你说:

CGRect tableFrame = CGRectMake(0, 0, self.tView.frame.size.width,
                               self.view.frame.size.height - 
                                   self.datePicker.frame.size.height);

tableFrame.size.height150 - 50 = 100

56低于100,因此选择器高于表格