2012-01-10 2 views
1

Я добавил два UIViews к следующему коду. self.view - мое мнение в контроллере навигации.y-позиция не верна при добавлении UIView к другому UIView

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 пикселя. Какова причина? Я не понимаю эту проблему.

+1

Пробовали ли вы регистрировать/отлаживать фреймы, кажется, проблема с фреймом, поскольку вы ссылаетесь на кадр из нескольких видов. В качестве рамок вида: позиция и размер представления в виде супервизора, где будет отображаться представление. Обозначение вида: положение и размер представления внутри самого представления. – rishi

ответ

1

Если вы хотите добавить подборщик под таблицей, сначала установите раму таблицы, а затем установите позицию 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]; 

Благодаря

0

Початкоотделитель косяк быть под вашим Tableview, потому что Tableview использует

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

в Hight
в то время как у вас позиция pickerview меньше

self.view.frame.size.height - self.datePicker.frame.size.height -44 
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.y является 150 - 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.height является 150 - 50 = 100

56 ниже, чем 100, так что сборщик выше, чем таблица

Смежные вопросы