Неправильная позиция y при добавлении UIView в другой UIView - PullRequest
1 голос
/ 10 января 2012

Я добавил два UIViews к представлению со следующим кодом.self.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 ]

1 голос
/ 10 января 2012

Если вы хотите добавить сборщик под видом таблицы, то сначала сначала установите рамку просмотра таблицы, а затем соответственно установите позицию выбора Y. Предположим, это ваше приложение для iPhone, и вы хотите добавить таблицу, а затем окно выбора, тогда ваш код будет выглядеть так -

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

[self.tView setFrame:tableFrame];

и затем установите рамку выбора вида как -

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 голосов
/ 10 января 2012

(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 is 150 - 50 = 100

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

0 голосов
/ 10 января 2012

Сборщик не может находиться под вашим tableView, потому что tableView использует

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

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

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