提问人:Chris 提问时间:2/27/2016 更新时间:2/27/2016 访问量:469
将 UIView 添加到 KeyWindow,调用 pushViewController 时如何对屏幕外的 UIView 进行动画处理?
Add UIView to KeyWindow, How to Animate UIView Off Screen When pushViewController is Called?
问:
我已经在我的中添加了一个,它工作正常。UIView
[UIApplication sharedApplication].keyWindow
当点击上的按钮时,我想将新的按钮推到底层UIView
UIViewController
NavigationController
这一切都有效,但是我怎样才能使动画离开屏幕,向左,与底层?UIView
UIViewController
答:
0赞
Achu22
2/27/2016
#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.
}
评论
0赞
alfreedom
2/27/2016
我认为您还必须执行[[[UIApplication sharedApplication] keyWindow] bringSubviewToFront:_v];添加子视图后
评论
UIView
KeyWindow