Tag: 屏幕旋转

我可以不使用旋转animation在视图控制器之间转换吗?

我有两个控制器: MainController,它只支持肖像 PhotoController,支持所有的方向。 这些包含在导航控制器中。 这种情况下效果不佳: 设备处于横向模式,屏幕上显示MainController,因此UI处于纵向模式。 我们在导航堆栈上推送PhotoController。 用户界面以旋转animation旋转。 从技术上讲,它按预期工作。 但是旋转animation在用户体验方面令人震惊。 我希望视图控制器之间的转换没有animation发生。 我想系统假装前一个控制器(MainController)已经在所需的方向。 那可能吗? 背景 MainController有它自己的方向机制,而不依赖于UIViewController。 因此,如果设备在横向模式下是灵敏的,则用户认为UI处于横向模式,尽pipeUIKit认为它是纵向模式。 当转换控制器时,旋转animation打破了我创build的错觉,所以我需要禁用它。 这是在iPhone上,而不是在iPad上。 这个问题不是导航控制器自定义过渡animation的一个骗局,因为我正在谈论纵向和横向之间的旋转animation,而不是一个视图控制器和另一个视图控制器之间的TRANSITIONanimation。

设备旋转后的iOSbutton点击区域

旋转后,我遇到了几个button的问题。 在纵向模式下,button堆叠在屏幕的底部。 在风景中时,它们被移动并resize以并排在屏幕的底部。 这一切都很好,button的行为正确。 但是,如果手机然后旋转回肖像,button的点击区域是错误的 – 只有button的左边1/3是可点击的。 这是做旋转的代码。 (我在viewWillAppear中调用它,所以当视图显示的时候,它总是被执行,以防视图已经在横向上)。我已经把button放在了它们自己的内部视图中。 – (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration { // determine our dimensions based on orientation CGRect mainRect = [[UIScreen mainScreen] bounds]; CGFloat maxWidthHeight = MAX(mainRect.size.width, mainRect.size.height); CGFloat minWidthHeight = MIN(mainRect.size.width, mainRect.size.height); CGFloat _windowWidth = (UIDeviceOrientationIsPortrait(toInterfaceOrientation)) ? minWidthHeight : maxWidthHeight; // get the current sizes of the things we are moving […]

shouldAutorotate没有调用视图控制器

我有一个简单的应用程序组成的单个视图控制器。 我开始使用Xcode 7 GM Single View Application模板,但是删除了主要的故事板,并设置了我的视图控制器,如下所示: func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { let vc = ViewController() window = UIWindow(frame: UIScreen.mainScreen().bounds) window!.rootViewController = vc window!.makeKeyAndVisible() return true } 在我的信息plist中,我具有在支持的界面方向下指定的所有方向,并且该应用程序在iPad上旋转到所有方向。 但是,在我的简单视图控制器中,shouldAutorotate shouldAutorotate()和supportedInterfaceOrientations()方法从不会被调用。 这是一个问题,因为我正在尝试启用和禁用自动旋转的UI控件。 有什么可以阻止这些方法被称为? 这里的示例项目(需要Swift 2) 非UINavigationController

设备旋转后,UITableView纠正滚动位置

我正在为一本书build立一个像读者的东西。 当用户旋转手机,我想增加字体大小。 我正在使用UITableView来显示文本块。 问题是,增加字体大小会增加我的表格视图中行的高度,如果我在纵向模式下阅读段落320,则在横向模式下获得280或类似的东西。 我已经build立了一个使用这个代码的循环通知监听器: UIDevice *device = [UIDevice currentDevice]; [device beginGeneratingDeviceOrientationNotifications]; NSNotificationCenter *nc = [NSNotificationCenter defaultCenter]; [nc addObserver:self selector:@selector(orientationChanged:) name:UIDeviceOrientationDidChangeNotification object:device]; 并试图保存旋转之前的最后一段索引,然后向下滚动到旋转后,但我似乎无法达到预期的效果。 处理这种情况的最好办法是什么?我在哪里实际执行“之前”和“之后”的轮换状态? 我希望它可以在iOS 4 +上运行。

iOS OpenGL ES屏幕旋转,而后台应用程序栏可见

我的应用程序使用GLKit来渲染3D场景与OpenGL ES 。 一切正常,除了一件事。 当我在iPad中启动我的应用程序并显示后台应用程序栏(双“Home”button单击),然后更改设备的方向时,场景更新错误(最后渲染的图像被简单地拉伸以填充新的矩形)。 我find了原因。 当后台应用程序栏出现时, GLKViewController's paused被自动设置为YES (应用程序委托接收到-applicationWillResignActive:并且在该栏closures之前不会进行渲染。 我在苹果指南( iOS的OpenGL ES编程指南/实现多任务感知的OpenGL ES应用程序 )中发现,在收到-applicationWillResignActive:应用程序应停止GL呈现或将被终止。 所以似乎一切都好,除了转动后的糟糕的渲染 我检查了一些OpenGL游戏。 当显示这个栏时,它们也变成了“暂停”,但是正确地更新了设备旋转中暂停的场景。 他们如何实现这一目标?

iOS 9方向自动旋转animation不工作,但始终在主线程

iOS 9.0(13A340)Xcode 7.0(7A220)OS X 10.10.5(14F27) 我有一个情况,如果我旋转模拟器或设备(使用iPhone 6s的SIM和iPhone 6 +设备),animation也不会发生。 我不确定这是为什么发生。 我没有做任何exception或疯狂的任何UIKit方法,我没有调用任何方法不在主线程。 另外,我添加的其他UIViewanimation看起来工作得很好。 这只是旋转的破碎。 其他应用程序似乎很好 我不确定我会做错什么。 试图找出/解决: Cocoanetics使用此扩展来试图查看是否有任何UIKit执行不在主线程上。 在程序执行过程中的多个位置打印出UIView.areAnimationsEnabled()的值。 它总是打印true 。 设置UIView.setAnimationsEnabled(true)没有修复。 我正在使用一个自定义的“导航”视图控制器(我做了一个): SASlideDrawer (注意我没有遇到这个单独的项目相同的问题) 谢谢。

无法强制UIViewController方向

我有一个景观ViewController的肖像应用程序。 我一直在挖掘很多关于如何强制方向横向时,应用程序被locking到肖像,我尝试了很多这里提出的解决scheme,不仅如此,但没有任何运气。 到目前为止,我设法自动旋转风景中需要的VC,但由于方向未locking,所有其他VC也将旋转。 override func viewDidAppear(animated: Bool) { let value = UIInterfaceOrientation.LandscapeRight.rawValue UIDevice.currentDevice().setValue(value, forKey: "orientation") } override func shouldAutorotate() -> Bool { return true } 经过更多的挖掘后,我find了一个示例项目,但当它在该项目中工作后,这似乎并没有为我工作。 这是在AppDelegate func application(application: UIApplication, supportedInterfaceOrientationsForWindow window: UIWindow?) -> UIInterfaceOrientationMask { if self.window?.rootViewController?.presentedViewController is ConclusionReferencesVC { let conclusionReferencesVC = self.window!.rootViewController!.presentedViewController as! ConclusionReferencesVC if conclusionReferencesVC.isPresented { return UIInterfaceOrientationMask.LandscapeRight; } else { […]

如何在解除模态视图控制器时保持呈现视图控制器的方向?

我有这个应用程序,我正在工作,我需要所有我的视图控制器,但一个是在肖像。 单一的视图控制器是特殊的我需要它能够旋转到任何方向的电话是在。 要做到这一点,我模式(没有embedded在NavigationController中) 所以(例如)我的结构是这样的: 窗口 – 肖像 根视图控制器(UINavigationController – Portrait) 主视图控制器(UIViewController – Portrait) 详细信息视图控制器(UIViewController – 肖像) 。 。 。 模式视图控制器(UIVIewController – 全部) 现在,当我closures我的模式视图控制器在横向位置我的父视图控制器也被旋转,即使它不支持该方向。 应用程序中的所有UIViewControllers和UINavigaionControllers都从实现这些方法的相同的一般类inheritance: override func supportedInterfaceOrientations() -> Int { return Int(UIInterfaceOrientationMask.Portrait.toRaw()) } 我的模式视图控制器再次覆盖这个方法,它看起来像这样: override func supportedInterfaceOrientations() -> Int { return Int(UIInterfaceOrientationMask.All.toRaw()) } 更新1 它看起来像只发生在iOS8 Beta上。 有人知道是否有什么改变视图控制器的旋转或这只是一个testing版中的错误?