Corona中文站

强大、易学的跨平台(iOS/Android)开发框架。QQ群1:74390406(满) 群2:221929599

导航

开发支持iPhone横屏的Tab Bar程序
当你为iPhone开发程序的时候,你可能会用到XCode提供的项目模板。这些模板里有一个叫做Tab Bar Application的,可以帮助你快速创建一个基于Tab Bar的程序,但是默认生成的模板仅仅支持竖屏显示。那么如何才能做一个这样的程序,既支持横屏也支持竖屏呢?本文我们会探讨这个问题。

首先在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支持所有的方向。

1.
// Override to allow orientations other than the default portrait orientation.
2.
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
3.
// Return YES for supported orientations
4.
return YES;
5.
}






这样做,当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中如何自定义tabbarobjective-c实现回调函数的几种方法 >>

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

最近发表

Powered By Z-Blog 1.8 Walle Build 100427 Copyright 2011-2015 BuildApp.Net. All Rights Reserved.