iPhone:如何从左到右做一个presentModalViewControlleranimation
我用animation呈现模型视图。 作为默认,它是从下到上。 我怎样才能使animation从左到右? 我知道我可以使用导航控制器。 但实际上,呈现视图不需要导航栏,模态呈现视图也不需要导航栏。 我仍然想要从左到右的过渡。
只有四个UIModalTransitionStyle
:
UIModalTransitionStyleCoverVertical UIModalTransitionStyleFlipHorizontal UIModalTransitionStyleCrossDissolve UIModalTransitionStylePartialCurl
就像你说的那样,一个导航控制器会这样推。 如果你不想使用它,你必须自己animation视图。
您可以通过使用以下代码呈现视图控制器时从右向左进行animation处理
CATransition *transition = [CATransition animation]; transition.duration = 0.4; transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]; transition.type = kCATransitionPush; transition.subtype = kCATransitionFromRight; [self.view.window.layer addAnimation:transition forKey:nil]; [self presentViewController:localitiesView animated:NO completion:nil];
我遇到了一个实现Matthew解决scheme的问题,因为在animation过程中呈现我的模态视图的视图将不可见(取而代之的是呈现视图将被replace为Window背景,然后模态视图会对其进行animation处理),这导致了令人不安的体验。 相反,我已经将模态视图作为子视图添加到呈现UIViewController的视图,并将其animation化。 我有一个不同的animation请求,所以我试图改变一些值来表示你描述的animation,但我没有真正testing下面的代码。
UIViewController *modalView = //init your UIViewController [modalView loadView]; CGRect finalFrame = modalView.view.frame; [modalView.view setFrame:CGRectMake(-320, 0, self.view.frame.size.width, self.view.frame.size.height)]; [UIView animateWithDuration:1.0 animations:^{ [self.navigationController setNavigationBarHidden:YES]; [self.view addSubview:modalView.view]; [modalView.view setFrame:finalFrame]; }];
希望这可以帮助。
UINavigationController
具有navigationBarHidden
属性 – 如果将其设置为YES,则可以在没有可见导航栏的情况下获得从左到右的过渡样式和导航控制器的其他细节。
只是想显示另一个选项 – 这一个让你从上到下呈现视图,使用UIViewanimation。 请注意,您必须以隐藏状态添加新视图 – 确保animation从视图完全加载开始。
AddViewController *controller = [[AddViewController alloc] initWithNibName:@"AddViewController" bundle:[NSBundle mainBundle]]; controller.blogs = self.blogs; UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:controller]; navController.toolbarHidden = YES; navController.navigationBarHidden = YES; self.modalPresentationStyle = UIModalPresentationCurrentContext; [self presentModalViewController:navController animated:NO]; navController.view.frame = CGRectMake(0, -480, [UIScreen mainScreen].bounds.size.width, [UIScreen mainScreen].bounds.size.height - 20); navController.view.hidden = NO; [UIView animateWithDuration:0.3 animations:^{ navController.view.frame = CGRectMake(0, 20, navController.view.frame.size.width, navController.view.frame.size.height); }];
你可以尝试这样的事情:
UIViewController *fooViewController = [[[UIViewController alloc] init] autorelease]; CGSize theSize = CGSizeMake(320, 460); fooViewController.view.frame = CGRectMake(0 - theSize.width, 0, theSize.width, theSize.height); [UIView beginAnimations:@"animationID" context:NULL]; fooViewController.view.frame = CGRectMake(0, 0, 320, 460); [UIView commitAnimations];
一个可能的重复与附加信息解散modalViewController反向从右到左的animation,以及: – dismissModalViewController与过渡:从左到右
- 使用NSNotification将NSStringvariables传递给其他类
- 将HTTP响应转换为string后的EXC_BAD_ACCESS
- 添加文本字幕到video轨道(在Swift中)失败,错误代码-11841
- 铸造NSDictionary作为词典Swift
- 在iOS 8之后,我可以继续使用UIActionSheet和UIAlertView吗?
- 调用睡眠(5); 并更新文本字段不工作
- 更改自定义文本字段背景颜色和文本颜色iOS Swift
- ITC.apps.validation.screenshot itunes连接iPhone 6的屏幕截图是必需的
- 我们可以重新启动一个应用程序在iPhone手机打开时closures