Как я могу анимировать вид, скользящий из-под навигационной панели на iPhone? - PullRequest
0 голосов
/ 23 октября 2009

Это связано с моим последним вопросом .

У меня есть приложение, которое я создал из шаблона «Приложение на основе навигации» в XCode. (У меня есть UINavigationController с подклассом UITableViewController с именем RootViewController.)

В таблице приведен список строк, с которыми пользователь может взаимодействовать. Панель навигации имеет стандартную кнопку Edit / Done слева и кнопку со знаком плюс справа. Я хотел бы сдвинуть представление, загруженное из .xib-файла, из-под навигационной панели, когда пользователь нажимает кнопку «плюс».

Я попытался реализовать это, выполнив следующее:

NSArray *xibContents = [[NSBundle mainBundle] loadNibNamed:@"NewNameView" owner:self options:nil];
UIView *view = [xibContents objectAtIndex:0];
[self.view addSubview:view];
view.frame = CGRectMake(view.frame.origin.x, view.frame.origin.y - 44, view.frame.size.width, view.frame.size.height);
[UIView beginAnimations:@"openAdd" context:nil];
view.frame = CGRectMake(view.frame.origin.x, view.frame.origin.y + 44, view.frame.size.width, view.frame.size.height);
[UIView commitAnimations];

(Высота представления составляет 44 пикселя.) Это анимирует представление, скользящее вниз, но оно покрывает первую ячейку таблицы. Я бы тоже хотел, чтобы представление таблицы скользило вниз.

1 Ответ

2 голосов
/ 23 октября 2009

Лучший способ сделать это - напрямую использовать UITableView методы.

//Update your data model with the new row

[self.tableView beginUpdates];

NSArray* indexPaths = [[NSArray alloc] initWithObjects:[NSIndexPath indexPathForRow:0 inSection:0], nil];
[self.tableView insertRowsAtIndexPaths:indexPaths withRowAnimation:UITableViewRowAnimationTop];
[indexPaths release];

[self.tableView endUpdates];

Ваш новый ряд будет выглядеть так, как будто он появился из-под панели навигации.

Для получения дополнительной информации о пакете вставка / удаление строки и разделов .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...