在iPad上我们有更多的工作空间,因此呈现全屏模态视图并不理想.
我知道如何在新的formSheet中呈现模态视图,并且可以在这个问题上找到一个接近的方法:iPad iTunes动画
问题是你无法选择动画的来源,所以它只是默认并从中心出现,我想自定义它以便从特定位置出现.
我可以在此视频的前几秒看到这个动画的最佳例子
如果有人能够使用代码,教程或文档指出我正确的方向,我将非常感谢!
更新:
经过一番调查后,我发现第一部分可以使用图层和核心动画来完成; 然后动画一个formSheet模态视图,但我仍然不太明白如何实现它,希望你们可以帮助!
modalTransitionStyle我想添加一个CAAnimation(或其他东西),而不是设置uiviewcontroller .此代码可以在navigationController中执行自定义动画
CATransition* transition = [CATransition animation];
transition.duration = 0.4;
transition.type = kCATransitionFade;
transition.subtype = kCATransitionFromBottom;
[self.navigationController.view.layer addAnimation:transition forKey:kCATransition];
[self.navigationController pushViewController:adjustViewController animated:NO];
Run Code Online (Sandbox Code Playgroud)
如何将其实现到模态视图控制器?
我想在当前视图上以模态方式呈现具有略微透明背景的视图控制器,这样第一个视图在模态视图下稍微可见.
我设置模态视图控制器的alpha值并设置modalPresentationStyle为UIModalPresentationCurrentContext,如另一篇文章中所建议的那样.
结果是视图背景在动画制作时是透明的,但是当视图控制器就位时,它会变为不透明的黑色.它可以恢复透明,同时激活解雇.
如何在活动时让它变得透明?
我已经测试过了iOS 6 and 7.我使用的代码如下:
MyModalViewController *viewController = [[MyModalViewController alloc] init];
UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:viewController];
[navController setNavigationBarHidden:YES];
self.navigationController.modalPresentationStyle = UIModalPresentationCurrentContext;
[self.navigationController presentViewController:navController animated:YES completion:NULL];
Run Code Online (Sandbox Code Playgroud) uiviewcontroller uinavigationcontroller modalviewcontroller ios
我试图从模态视图控制器隐藏iPad键盘,但它不起作用.我已经尝试过resignFirstResponder,但如果我们在模态视图控制器中,这没有任何影响.我在非模态UINavigationController中尝试了resignFirstResponder,它具有完全相同的UIViewController并且键盘正确隐藏.
有谁知道如何解决这个问题?
谢谢.
[更新]看起来我的代码有问题,因为resignFirstResponder确实有效(我做了一个简单的测试用例而不是使用我的代码).但我仍然不知道问题是什么.
iphone objective-c uinavigationcontroller ipad modalviewcontroller
我目前有一个在模态视图中显示的UIWebView.它基本上是一个详细视图,提供用户单击链接时的页面视图.当视图被驳回,然后再次提出了(当用户点击另一个链接),先前加载的内容仍然是可见的,"上面"的最后内容的新内容加载.这是有道理的,因为UIWebView的实例在会话之间持续存在,并且仅在需要内存时才会释放.
但是,当模态视图被解除时,我想完全清除UIWebView,以便1)内容被清除,2)内存被释放.到目前为止,我的研究和尝试都没有找到答案.这些链接对我没用:
我已经尝试[[NSURLCache sharedURLCache] removeAllCachedResponses];将webView设置为nil并在模态视图关闭时手动释放webView无效.干瘪群众的任何想法?
FinalViewWithSending *newView = [[FinalViewWithSending alloc]initWithNibName:@"FinalViewWithSending" bundle:nil];
newView.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
[self presentModalViewController:newView animated:YES]; //it crashes here with a thread 1 error, SIGABRT error..
Run Code Online (Sandbox Code Playgroud)
它说:
"Terminating app due to uncaught exception 'NSUnknownKeyException',
reason: '[<FinalViewWithSending 0x1bef70> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key loginButton.'"
Run Code Online (Sandbox Code Playgroud)
没有名为loginButton的变量,所以我不知道为什么我会收到错误...
谢谢
更新: iOS 6 beta 1不再出现
我目前正在使用新的iOS 5 SDK调整现有的iOS 4应用程序.我在一个读取Youtube视频的模态视图控制器中呈现UIWebView时发现了一个新的崩溃.
开始阅读视频很好,但是当我尝试全屏设置时,我得到以下异常:
Exception: UIViewControllerHierarchyInconsistency,
child view controller:<UIViewController: 0x6aef180>
should have parent view controller:<WebViewController: 0x6a706c0>
but requested parent is:<MPInlineVideoViewController: 0x6ae5d40>
Run Code Online (Sandbox Code Playgroud)
这是我在主视图控制器中实例化并呈现我的模态视图控制器的方法:
- (IBAction)buttonReleased:(id)sender
{
WebViewController *webVC = [[WebViewController alloc] initWithNibName:@"WebViewController" bundle:[NSBundle mainBundle]];
webVC.modalTransitionStyle = UIModalTransitionStyleCoverVertical;
webVC.modalPresentationStyle = UIModalPresentationPageSheet;
[self presentModalViewController:webVC animated:YES];
}
Run Code Online (Sandbox Code Playgroud)
我使用UIModalPresentationPageSheet作为modalPresentationStyle,当我将此值设置为UIModalPresentationFullScreen时,不再出现错误.
在我的模态WebViewController中,这是我加载Youtube视频的方式:
- (void)viewDidLoad
{
[super viewDidLoad];
[self.webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.youtube.com/watch?v=bDlm3eLRut0"]]];
}
Run Code Online (Sandbox Code Playgroud)
关于这个问题的任何想法?我可以提供一个完整的示例代码,以便在需要时隔离此崩溃.
谢谢 !
我有一个iOS 7的问题似乎是一个错误或我只是不做正确的事情.我有modalViewController,它在iPad上使用ModalPresentationStyle显示为popover.它不是标准尺寸,自定义尺寸.这是代码:
myViewController *myVC = [[myViewController alloc] init];
UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:myVC];
[nav setModalPresentationStyle:UIModalPresentationFormSheet];
[nav setModalTransitionStyle: UIModalTransitionStyleFlipHorizontal];
[self presentViewController:nav animated:YES completion:nil];
nav.view.superview.bounds = CGRectMake(0, 0, 320, 465);
Run Code Online (Sandbox Code Playgroud)
它在iOS 6中都运行良好,但在iOS 7中并没有集中.但是,如果我将ModalTransitionStyle设置为UIModalTransitionStyleCrossDissolve,它可以正常工作.但只有在这种模式下.也许有人偶然发现了这个,知道如何修复它?我不是解散效果的忠实粉丝.谢谢.
objective-c ipad modalviewcontroller uimodalpresentationstyle ios7
在Xcode 6中打开旧项目,发现在呈现的视图控制器中背景不透明的问题.我在下面的主题中使用了解决方案,它在ios7中工作到目前为止. iOS:ModalView背景透明吗?
请建议如何处理iOS 8.
我有一个自定义动画UIViewController转换,似乎iOS中存在一个错误,它以横向方向搞砸了布局.在主要的动画方法中,我给出了混合的横向和纵向视图.(在肖像中,视图都是人像,所以没问题.)
- (void)animateTransition:(id <UIViewControllerContextTransitioning>)transitionContext;
{
UIViewController* toViewController = [transitionContext viewControllerForKey:UITransitionContextToViewControllerKey];
UIViewController* fromViewController = [transitionContext viewControllerForKey:UITransitionContextFromViewControllerKey];
UIView *containerView = [transitionContext containerView];
// fromViewController.view => landscape, transform
// toViewController.view => portrait, transform
// containerView => portrait, no transform
[containerView addSubview:toViewController.view];
// ...animation... //
}
Run Code Online (Sandbox Code Playgroud)
我知道frame当视图有变换时属性不可靠 - 所以我猜这是问题的根源.在横向模式下,to/from viewControllers视图具有90度顺时针变换[0 -1 1 0].我已经尝试使用边界/中心来调整视图的大小和位置,以及删除变换然后重新应用它,但是UIKit与我打架并且坚持将视图显示为肖像.烦!
在屏幕截图中,深灰色是UIWindow背景,红色是添加的模态视图控制器,应覆盖整个屏幕.
有人找到了解决方法吗?