Добавить UIView в KeyWindow, Как анимировать UIView с экрана, когда вызывается pushViewController?
Я добавил UIView
к моему [UIApplication sharedApplication].keyWindow
и это работает правильно.
Когда кнопка на UIView
нажал, я хочу нажать новый UIViewController
на подстилающий NavigationController
Это все работает, но как я могу сделать UIView
анимация с экрана, влево, с нижележащим UIViewController
?
1 ответ
Решение
Вы можете анимировать свой пользовательский вид и одновременно передать элемент управления в контроллер почтового представления, чтобы поместить следующий контроллер вида в стек контроллера навигации... Ниже приведен пример кода, который я смоделировал. Анимация вашего пользовательского представления должна синхронизироваться с анимацией контроллеров представления.
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
_v = [[UIView alloc] initWithFrame:CGRectMake(100, 100, 100, 100)];
UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];
[btn setFrame:CGRectMake(0, 0, 50, 30)];
[btn setTitle:@"Button" forState:UIControlStateNormal];
[btn addTarget:self action:@selector(btnClicked:) forControlEvents:UIControlEventTouchUpInside];
[_v addSubview:btn];
_v.backgroundColor = [UIColor redColor];
[[[UIApplication sharedApplication] keyWindow] addSubview:_v];
}
- (void)btnClicked:(id)sender {
NSLog(@"Btn Clicked");
[UIView animateWithDuration:0.2
delay:0.1
options: UIViewAnimationOptionCurveEaseOut
animations:^
{
_v.frame = CGRectMake(-_v.frame.size.width,
_v.frame.origin.y, _v.frame.size.width, _v.frame.size.height);
}
completion:^(BOOL finished)
{
}];
UIViewController *c = [self.storyboard instantiateViewControllerWithIdentifier:@"TestVC"];
[self.navigationController pushViewController:c animated:YES];
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}