Tag: 自动旋转

iPad UISplitViewController Phantom Master View控制器

使用UISplitViewController查找自动旋转问题的解决scheme。 重新创build的步骤是: 使用Xcode 4.5+和iOS6 + SDK,使用“Master-Detail Application:”模板创build一个新项目。 使用全屏大小的XIB文件将新的视图控制器添加到项目中。 向使用-presentViewController呈现新视图控制器全屏的详细视图控制器添加一个button:animated:completion: 将一个button添加到使用dismissViewControllerAnimated消除自身的新视图控制器:完成: 在横向模式下使用iPad启动应用程序,然后点击提供新视图控制器的详细视图中步骤3中创build的button。 查看全屏视图控制器时,将iPad旋转为纵向,然后点击步骤4中添加的button以closures新的视图控制器。 问题:使用这些步骤,主视图控制器和详细视图控制器都将自动旋转,但主视图控制器将停留在屏幕上处于无响应状态,并占用屏幕左上angular的框架,该框架的大小与它是在横向模式。 通过使用iPad左侧的手势,将显示正确的主视图控制器并清除问题。 我们已经能够在新的视图控制器中使用viewWillAppear和viewDidDisappear来隐藏幻影主视图控制器,但即使使用该修复,模板在纵向提供的“主”button在执行上述步骤后仍然没有响应,而我们已经追踪到这样的事实,即在修复之前由主视图控制器占用的左上方的屏幕区域对触摸没有响应。 我们已经尝试了几次以不同的方式辞职的第一反应者,但没有完全解决问题的运气。 注意:如果在首次启动应用程序时遵循上述步骤5-6,则通常会发生此问题。 在单个应用程序启动中重复步骤6通常不会导致每次都出现问题。 每次发布应用程序都是可重复的。

“支持界面定位”是否有先例?

我正在开发一个应用程序,我想要一个屏幕自动旋转到风景。 这将是应用程序中唯一的旋转屏幕。 我试图find这样做的最简单的方法。 如果我在构build摘要页面中(即使用切换button)设置支持的方向,那么它就是肖像。 那么我可以覆盖这个在我想要自动旋转屏幕的代码? 或者我必须反过来呢? 即支持所有的方向,然后禁用所有屏幕,我不想旋转? 谢谢

限制某些视图的自动旋转

我的应用包含两个表格视图控制器。 在第一个我希望能够左右旋转视图(除了肖像模式),但是在第二个表视图控制器(我从第一个表中点击单元格后导航)我想要它只能在肖像模式下查看。 我试过这个代码,但它没有工作,它一直在旋转。 – (NSUInteger)supportedInterfaceOrientations { return UIInterfaceOrientationMaskPortrait; } – (BOOL) shouldAutorotate { return NO; } 注意:我确实从项目目标的摘要选项卡启用了左/右/纵向方向。 任何修复?

在iOS中自动旋转崩溃

当我正在改变设备方向时,我正在与正在使用的应用程序发生exception终止(崩溃)。 我无法经常重现(当我旋转的时候并不总是这样,假设机会在0.01%左右),但这是一个严重的问题。 我附上了崩溃报告的重要部分。 Exception Type: EXC_BAD_ACCESS (SIGSEGV) Exception Codes: KERN_INVALID_ADDRESS at 0x6563616e Crashed Thread: 0 Thread 0 name: Dispatch queue: com.apple.main-thread Thread 0 Crashed: 0 libobjc.A.dylib 0x3233a5b0 objc_msgSend + 16 1 UIKit 0x36297b82 -[UISectionRowData refreshWithSection:tableView:tableViewRowData:] + 1546 2 UIKit 0x3628301e -[UITableViewRowData rectForFooterInSection:] + 310 3 UIKit 0x3628358c -[UITableViewRowData heightForTable] + 48 4 UIKit 0x36283400 -[UITableView(_UITableViewPrivate) […]

preferredInterfaceOrientationForPresentation必须返回支持的界面方向(iOS 6)

我的应用程序窗口的根视图控制器是一个子类UINavigationController。 我已经将这个代码添加到类中: – (BOOL)shouldAutorotate { return [self.topViewController shouldAutorotate]; } – (NSUInteger)supportedInterfaceOrientations { return [self.topViewController supportedInterfaceOrientations]; } – (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation { return [self.topViewController preferredInterfaceOrientationForPresentation]; } 在我的根UIViewController我已经添加了这个代码: – (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation { return UIInterfaceOrientationPortrait; } – (BOOL)shouldAutorotate { return NO; } – (NSUInteger)supportedInterfaceOrientations { return UIInterfaceOrientationPortrait; } 当设备旋转到这个视图控制器上的横向时,我提出了一个模态视图控制器。 当设备旋转到肖像,我应该解雇模态视图,但是当我这样做时,我得到以下错误: 'preferredInterfaceOrientationForPresentation must return a supported interface orientation!' 为什么我得到这个错误? 我尝试从根UIViewController的shouldAutorotate返回YES,现在我得到错误“支持的方向与应用程序没有共同的方向,并且shouldAutorotate返回YES”。 这对我来说没有任何意义,因为UIInterfaceOrientationPortrait是应用程序支持的方向之一。

ios6 autorotation portraitupsidedown到肖像

请不要build议我在1个版本的ios 4.3-6.0上进行轮换是个不错的主意,因为我多次告诉过,并没有听我说。 在项目设置中,我已经设置了所有的接口方向来支持,只是可以肯定的。 现在我正在用iphone4testingios6。 从应用程序委托开始,它是一个代码,如下所示: mainController = [[MainViewController alloc] initWithNibName:nil bundle:nil]; navigationController=[[RotatingNavigationController alloc] initWithRootViewController:mainController]; navigationController.navigationBar.hidden =true; // ios: 4 and 5 //[window addSubview:navigationController.view]; //ios6: window.rootViewController = navigationController; [window makeKeyAndVisible]; 所以我做了2个自定义的类,在自动旋转的情况下推荐它们,并为他们解决了这个问题。 RotatingNavigationController是一个自定义的UINavigationController有一些难看的代码,但是我从这个论坛收集了这个部分,所以应该允许它发布它: @implementation RotatingNavigationController – (id)init { self = [super init]; if (self) { self.view.autoresizesSubviews = YES; [self.view setAutoresizingMask:(UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth)]; } return self; } // […]

willAnimateRotationToInterfaceOrientation不会在ios6 / 7上调用

我有一个旧的应用程序,仍然生活在iTunes上,写在iOS 5.我想更新它在iOS 6和7上运行。一切都很好,我已经更新我的代码使用ARC。 然而,当试图保持相同的自转理念时,我一直打砖墙。 我已经在SO中检查了相关的主题: 在iOS 7中强制横向和自动旋转 , iOS 6中的自动旋转具有奇怪的行为 并遵循类似的话题,我发现这一点: iOS 6 Autorotation问题和帮助 这导致我做到以下几点: 我在我的AppDelegate中设置了rootViewController,如下所示: self.preloadingViewController = [[PreloadingViewController alloc] initWithNibName:@"PreloadingViewController" bundle:nil]; self.window.rootViewController = self.preloadingViewController; 我已经放置: – (NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window{ return UIInterfaceOrientationMaskAllButUpsideDown; } 在我的AppDelegate。 我在所有应用程序的UIViewControllers(包括上面提到的PreloadingViewController)的SuperViewController(inheritance术语中的父类)中覆盖了shouldAutorotate和supportedInterfaceOrientations : – (BOOL)shouldAutorotate{ return YES; } – (NSUInteger)supportedInterfaceOrientations{ return UIInterfaceOrientationMaskAllButUpsideDown; } 并在每个孩子UIViewController,我重写 – (void) willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration 用代码来以理想的方式布置UI元素以用于纵向和横向取向。 最后我的应用程序的plist文件下 支持的接口方向 […]

当视图控制器以模态方式呈现时,在iOS 9中未调用“viewWillTransitionToSize:”

我从另一个展示视图控制器: – (void)showModalView { UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil]; MySecViewController *mySecViewController = [storyboard instantiateViewControllerWithIdentifier:@"secController"]; mySecViewController.delegate = self; [self presentViewController:mySecViewController animated:YES completion:nil]; } 然后在呈现的UIViewController ,方法viewWillTransitionToSize:withTransitionCoordinator:在iOS 8调用,但不在iOS 9调用… 谢谢

在7.3 / 9/2 + Swift中如何禁用旋转animation,设备何时旋转?

这个问题严格的关于iOS9 + 假设你有一个普通的现代应用程序(自动布局,故事板,通用),它允许所有四个旋转位置 你希望它以正常的方式自动旋转,所以当用户从横向到纵向旋转设备时,它会改变为新的基于约束的布局 但是在用户旋转设备的时候,你只需要没有animation。 你想要它只是“点击”新的横向或直立的布局。 我能做到这一点的唯一方法是增加: override func viewWillTransitionToSize(size:CGSize, withTransitionCoordinator coordinator:UIViewControllerTransitionCoordinator) { coordinator.animateAlongsideTransition(nil, completion: {_ in UIView.setAnimationsEnabled(true) }) UIView.setAnimationsEnabled(false) super.viewWillTransitionToSize(size, withTransitionCoordinator: coordinator); } 到一个视图控制器,一个最高或接近最高的VC,用于保存容器视图的其余部分或场景中的任何内容。 这与使用willRotateToInterfaceOrientation / didRotateFromInterfaceOrientation(现在在现代iOS中不能使用)的古老想法基本相同,可以将animation开关。 但是有很多问题 这不适用于AppWide,它是一团糟,它是基于场景的 关掉所有的animation似乎很不好 你可以看到各种赛道 这个问题严格的关于iOS9 + 这些天,有没有更好的方法来closures支持风景/肖像的应用程序中的旋转animation? 这个问题严格的关于iOS9 +

键盘“WillShow”和“WillHide”与旋转

我有一个视图控制器监听UIKeyboardWillShowNotification和UIKeyboardWillHideNotification。 这些通知的处理程序会调整视图的各个部分,这是标准过程。 以下代码用于从屏幕坐标转换键盘矩形: CGRect keyboardBounds = [self.view convertRect:[keyboardBoundsValue CGRectValue] fromView:nil]; 再次,标准程序。 不幸的是,这种转换失败的危急情况。 查看在部署键盘时将iPhone从纵向旋转到横向时发生的情况: 1)iOS自动触发UIKeyboardWillHideNotification ; self.interfaceOrientation被报告为肖像 ; keyboardBounds.height是216.0 。 这是有道理的 。 为什么? 因为在视图切换到横向模式之前,通知处理程序有机会“清理”。 2)iOS自动触发UIKeyboardWillShowNotification ; self.interfaceOrientation被报告为肖像 ; keyboardBounds.height是480.0 。 这没有任何意义 。 为什么不? 因为通知处理程序将要做的工作,认为键盘的高度是480.0! 苹果是不是把这个球弄丢了,还是我做错了什么? 请注意,代替UIKeyboard听ShowNotification不是一个有效的解决scheme,因为它显着降低了用户体验。 为什么? 因为在键盘部署animation发生后,对视图所做的更改animation效果非常糟糕。 有没有人设法让自动旋转完美的键盘部署? 苹果已经完全忽视了混乱的爆发。 >:|