当你为iPhone开发程序的时候,你可能会用到XCode提供的项目模板。这些模板里有一个叫做Tab bar Application的,可以帮助你快速创建一个基于Tab bar的程序,但是默认生成的模板仅仅支持竖屏显示。那么如何才能做一个这样的程序,既支持横屏也支持竖屏呢?本文我们会探讨这个问题。
作者Matt Long
原文地址 http://www.cimgf.com/2008/11/13/landscape-tab-bar-application-for-the-iphone/
首先在XCode中创建一个新的Tab bar程序。
1 按Command+Shift+N,在iPhone OS中选择Tab bar Application,点击Choose…
2 为项目写一个名字,比如Tab Test
3 点击Save按钮。
你首先会注意到的是模板生成了两个类,一个叫做FirstVIEwController,用来控制第一个vIEw。另一个叫做Tab_TestAppDelegate,作为程序的主控制器。
看一看FirstVIEwController中剩下的代码,大部分都被注释掉了,但是你会注意到有一个方法可以支持横屏。我们特别关心的是 -shouldautorotatetoInterfaceOrIEntation。 去掉这段注释,返回YES。这个设置会让controller支持所有的方向。
// OverrIDe to allow orIEntations other than the default portrait orIEntation. - ( BOol )shouldautorotatetoInterfaceOrIEntation : (UIInterfaceOrIEntation )interfaceOrIEntation { // Return YES for supported orIEntations return YES; }
这样做,当iPhone翻转时,会让我们的VIEw也发生改变。用模拟器编译运行程序,当模拟器打开程序,选择菜单中的HarDWare -> Rotate left。你会发现当设备旋转时,VIEw并没有跟着旋转。这是为什么呢?
全部或是没有
记住默认的tab bar程序模板建立了一个支持两个vIEw的tab bar组建。当我们特别告诉FirstVIEwController对象支持横屏时,我们并没有告诉第二个vIEw也同时支持横评。Tab bar工作的方式是如果任意一个vIEw controller对于方向感应做出限制时,所有的VIEw都会相应做出同样的限制。
这就意味着所有的controller必须一样调用-shouldautorotatetoInterfaceOrIEntation方法,返回YES来告诉系统打开横屏支持。在我们默认的Tab bar程序里,我们并没有将第二个VIEw制定到Controller里,因为我们并没有定义第二个controller。那么第二个controller在哪儿呢?答案是在Interface Builder中。你可以在XCode里双击MainWindow.xib,将Interface Builder打开。点击第一个VIEw的tab,在Inspector中选择IDentity tab,你就会发现是怎么回事了。
注意我们使用的是UIVIEwController类,这是我们vIEw的controller,它紧紧提供了基本功能:这意味着它并没有完全提供controller的所有功能。屏幕旋转的默认设置仅仅支持竖屏。换句话讲,只有派生的类才支持通过-shouldautorotatetoInterfaceOrIEntation方法来打开横屏支持。
如果你希望你的程序支持横屏,你所有的tab vIEw必须有自己的vIEw controller,然后调用-shouldautorotatetoInterfaceOrIEntation,并返回YES来支持横屏。
结论
iPhone是很有趣的平台,非常强大,但是和你所熟悉的Mac OSX系统还是有些细微的差别。技巧是要记住你学过的Cocoa、MVC的基本概念,你就能够解决遇到的问题。
总结以上是内存溢出为你收集整理的开发支持iPhone横屏的Tab Bar程序全部内容,希望文章能够帮你解决开发支持iPhone横屏的Tab Bar程序所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)