Tag: 自动旋转

iOS6首选接口方向不起作用

我正在尝试使用iOS6自动旋转混乱。 我已经看过几乎所有关于它的SO问题,无论我尝试什么,我都无法得到轮换的工作方式。 该应用程序正在使用故事板,布局如下: Navigation controller —> Root view controller —> Tab view controller —> View controller —> Landscape view controller. 当我旋转模拟器时,视图控制器会自动旋转,但当继续回到之前的视图(设置为纵向)时,视图变为横向,当它应该是纵向时。 如果我将模拟器旋转回来,视图会自动旋转到纵向,但是这应该已经自动完成了! 我已经实现(UIInterfaceOrientation)preferredInterfaceOrientationForPresentation ,并没有被调用在我把它放在任何视图控制器。 我已经subclassed NavigationController返回topViewController , supportedInterfaceOrientations和preferredInterfaceOrientationForPresentation和旋转模拟器似乎工作时自动旋转,但preferredInterfaceOrientationForPresentation永远不会工作。 有没有人有这个解决scheme?

自动导出和设备定位

我正在开发一个supports portrait and landscape modes的应用程序。 我正在使用auto layout to arrange my views 。 正如我一直在阅读很多职位,我已经意识到,开发人员通常使用以下方法之一。 1.第一种方法: 实现UIViewController:updateConstraints方法并根据设备方向更新约束。 2.第二种方法: 实现UIViewController:viewWillLayoutSubviews方法并根据设备方向更新约束。 任何人都可以告诉我什么是最好的方法来使用? 我一直在寻找结合自动旋转和自动布局的最佳实践,现在还没有。 谢谢。

如何避免在iOS OpenGL ES应用程序的自动转换中出现短暂的延伸

这近来一直在困扰着我。 将一个支持纵向和横向的OpenGL ES应用程序放在一起非常简单。 但是在自动旋转过程中,系统似乎只是将渲染缓冲区强制拉伸到新维度,自动旋转,然后调用通常的-layoutSubviews – > -resizeFromLayer:等等,以便可以将可绘制对象调整到新的视口维度。 我见过的大多数支持纵向和横向的应用程序似乎都适合这种简单的方法。 但是我想知道我能做得更好吗? 也许我应该在它发生之前拦截自动旋转(使用UIViewController的通常方法),一旦渲染缓冲区“扩大”到最长屏幕尺寸的完美平方(例如,iPhone 5上的1136px x 1136px) – 这样,在屏幕外出血,执行自转(没有渲染缓冲区大小的变化,因此没有拉伸,就像在两个风景方向之间切换时一样),最后再次调整帧缓冲区,以便在屏幕之外处理不可见的“浪费的”边距。 (当然,我可以一直有一个方形的帧缓冲器,但这将是低效的填充方式) 有什么build议么? 有没有更好的方法来实现这一点,我没有想过? 编辑 我修改了我的-resizeFromLayer:代码,如下所示: CGRect bounds = [layer bounds]; // Enlarge layer to square of the longest side: if (bounds.size.width < bounds.size.height) { bounds.size.width = bounds.size.height; } else{ bounds.size.height = bounds.size.width; } [layer setBounds:bounds]; // Adjust size to match […]

适用于youtubeembedded式video的iOS 6.0+自动转换

我只想在我的iOS应用程序的所有视图控制器中支持垂直方向。 但是,我在其中一个视图控制器中embedded了一个YouTubevideo,当select该video占用全屏幕时,我希望用户能够水平定位他/她的手机,使video扩展为全屏。 编辑:我试图从iOS 6中使用以下代码从Autorotate有奇怪的行为 : – (NSUInteger) application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window { return self.fullScreenVideoIsPlaying ? UIInterfaceOrientationMaskAllButUpsideDown : UIInterfaceOrientationMaskPortrait; } 并在我的视图控制器呈现UIWebView / YouTube框架,我有我的viewDidLoad这个代码: [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(windowNowVisible:) name:UIWindowDidBecomeVisibleNotification object:self.view.window ]; – (void)windowNowVisible:(NSNotification *)notification { AppDelegate* appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate]; appDelegate.fullScreenVideoIsPlaying = !(appDelegate.fullScreenVideoIsPlaying); } 但是,当用户按下全屏YouTubevideo完成时,如果他/她仍然具有水平的电话,则呈现视图控制器也保持水平(我希望当前视图控制器是纵向的)。 这是一个比赛fullSreenVideoIsPlayingvariables,这是不够快的更新,使我的呈现视图控制器是肖像。 任何有关如何实现这一点的反馈将不胜感激。 谢谢!