Обновление представления NavigationController, имитирующего push - PullRequest
1 голос
/ 06 февраля 2012

Могу ли я сделать просмотр с анимацией и только обновить ее содержимое?У меня есть 4 одинаковых вида, поэтому вместо создания 4 xib я хотел обновить вид, но у пользователя сложилось впечатление, что он поменял представления.

Так что я действительно не хочу делатьтолчок, я только хочу произвести впечатление на пользователя.Это возможно?

Ответы [ 3 ]

4 голосов
/ 06 февраля 2012

Лучший подход к этому (imho) состоит в том, чтобы вытолкнуть текущий вид без анимации, а затем сразу же нажать тот же вид снова.

myNavigationController = self.navigationController;
[myNavigationController popViewControllerAnimated:NO];
[myNavigationController pushViewController:myViewController animated:YES];

Это часть техники, которую я использую, чтобы создать эффект неограниченного количества просмотров, в то время как в действительности только использование / сохранение одного в памяти.

Если вы хотите обработать навигацию «назад», вы нажимаете новую без анимации, а затем вставляете ее с анимацией.

myNavigationController = self.navigationController;
[myNavigationController pushViewController:myViewController animated:NO];
[myNavigationController popViewControllerAnimated:YES];
1 голос
/ 06 февраля 2012

Я создал простой проект с одним VC и кнопкой посередине, чтобы запустить анимацию.Вот код, привязанный к кнопке:

- (IBAction)pushNewView:(id)sender {
[UIView animateWithDuration:0.5 animations:^{
    // this moves the view off screen to the left
    self.view.frame = CGRectMake(-320, 0, 320, 480);
} completion:^(BOOL finished) {
    // this pops the view over to the right side of the screen
    self.view.frame = CGRectMake(320, 0, 320, 480);
    [UIView animateWithDuration:0.5 animations:^{
        // and this slides it in from the right
        self.view.frame = CGRectMake(0, 0, 320, 480);
    }];
}]; }

Вы можете поиграться с таймингом, чтобы он выглядел немного более "родным", и поиграть с альфой, как упоминалось ранее.Вы можете изменить это в любом из двух блоков анимации.

0 голосов
/ 06 февраля 2012

Вы можете анимировать один вид слева и одновременно анимировать следующий вид справа, это будет то же самое, что толчок (при условии, что следующий и текущий виды уже являются подпредставлениями)

UIView *nextView.frame = CGRectOffset(self.view.frame, self.view.frame.size.width, 0.0f);

[UIView animateWithDuration:0.3f animations:^{
    currentView.frame = CGRectOffset(currentView.frame, -self.view.frame.size.width, 0.0f);
    nextView.frame = CGRectOffset(nextView.frame, -self.view.frame.size.width, 0.0f);
}];

это, вероятно, выглядело бы лучше, если бы вы поэкспериментировали с изменением альфа-свойства представлений

...