У меня есть особый сценарий, который я пытаюсь подражать, и, будучи довольно новым для Cocoa Touch, я не уверен в лучшем способе его достижения. Простите мои недостающие тактические знания; мы надеемся, что ясная экспозиция поможет.Как выполнить «90% -ный слайд» между двумя UIViews
Я хотел бы эмулировать:
приложение я смотрю (в частности) является Beat. Ниже приведен пример одного из их UIViews - в частности, обратите внимание на значок шестеренки для настроек внизу.
Когда эта передача коснулась или прокатывается вверх, два изменения первичной UIView происходит:
- оригинальный UIView скользит вверх по экрану около 90% пути (The ключа точки что он не скользит все путь вверх).
- Новый UIView соскользнул, чтобы заполнить это недавно освобожденное пространство на 90%.
Это основные функции, которые я хотел бы сделать.
Идея Реализация # 1: Single UIViewController ж/Несколько UIViews
Сначала я считал, имея один UIViewController управлять как "основной" и мнения "настройки". В этом случае было бы довольно просто перевести эти взгляды соответствующим образом.
Это, как мне кажется, немного загромождает меня. В зависимости от того, насколько надежны мои два набора функциональных возможностей, это рецепт перегрузки одного UIViewController. Вы могли бы сказать мне, что все в порядке, но с места в карьер, кажется, слишком много.
Идея Реализация # 2: Несколько UIViewControllers В рамках пользовательского Container ViewController
Это маршрут я в настоящее время идет вниз. Она отделяет два дискретных наборов функциональных возможностей в отдельные UIViewControllers (содержится в контейнере ViewController) и переходы между ними с помощью:
- (void)flipFromViewController:(UIViewController *)fromController
toViewController:(UIViewController *)toController
{
CGFloat width = self.view.frame.size.width;
CGFloat height = self.view.frame.size.height;
fromController.view.frame = CGRectMake(0.0f, 0.0f, width, height);
toController.view.frame = CGRectMake(0.0f, height, width, height);
[self addChildViewController:toController];
[fromController willMoveToParentViewController:nil];
[self transitionFromViewController:fromController
toViewController:toController
duration:0.5f
options:UIViewAnimationOptionTransitionNone
animations:^(void) {
fromController.view.frame = CGRectMake(0.0f, -(height - 100.0f), width, height);
toController.view.frame = CGRectMake(0.0f, 100.0f, width, height);
}
completion:^(BOOL finished) {
[fromController removeFromParentViewController];
[toController didMoveToParentViewController:self];
}];
}
Проблема с этим является переход: это не похоже, чтобы остановить «90% пути ". Похоже, что он полностью соответствует переход из «старого» контроллера и в «новый» контроллер, хотя мои корректировки кадров на двух UIView не должны быть «полными» ходами.
где я хотел бы Наведение
Я не прошу для полного решения - ваш опыт будет слишком дорого. :) Это говорит о том, что я довольно новичок в этом, я бы хотел, чтобы вы поняли, каким будет правильный подход. Пожалуйста, дайте мне знать, если я могу предоставить дополнительную информацию.
Спасибо!
Это делает трюк! Спасибо. – ABach