开发支持iPhone横屏的Tab Bar程序
时间: 2009-06-11 20:24 点击: 次
当你为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的基本概念,你就能够解决遇到的问题。
顶一下(9)
81.8%
踩一下(2)
18.2%
发表评论
本类文章点击排行榜
- [06-26] iPhone 开发过程中的一些小技术
- [03-16] 23个开源App的App Store地址和源
- [06-11] 比较官方iPhone SDK和开源工具链
- [06-11] 简单明了SDK2.2.1无99刀证书真机
- [06-12] iPhone开发, 全区索引, 动态更新
- [06-16] 如何嗅探iphone的网络流量
- [02-03] iPhone在线音乐盒,代码开源
- [03-15] iPhone方块游戏拖动手势源码共
- [06-11] iPhone GUI的PSD分层图
推荐内容
最近更新
- [08-03] iPhone的九宫格实现代码
- [08-03] iPad/iPhone及Universal程序开发心得总结
- [08-03] 获取网页 HTML 中 <Title>内容的代码
- [08-02] 读写 .plist 文件的代码例子
- [08-02] 连接 iPhone 的sqlite数据库的一段代码例子
- [08-02] 让label自适应里面的文字,自动调整宽度和高度的
- [08-02] 在.mm文件中能#include <vector>但在.h文件中不行
- [08-02] 关于 addTarget 指定响应函数的一个小问题
- [08-02] iPhone 默认时钟的字体以及实现代码
相关文章
- [06-30] 改变 Three20 里 TTTabStrip 的 tab 字体颜色的方法
- [06-21] 关于TableView中图片的延时加载
- [06-18] 为UINavigationBar设置背景图片的方法
- [06-11] Apple Design Awards 2010大奖公布,10款App上榜
- [06-07] 让tableView滚到顶部的代码
- [06-07] NSString+NSMutableString+NSValue+NSAraay用法汇总
- [05-27] 用图片充当Table Separator分割线背景的方法
- [05-11] sqlite + UITableView 实现iPhone大数据浏览
- [04-27] 提升iPhone上输入效率的设计思路
- [04-20] 往sqlite中写入和读取图片二进制数据的代码




让iPhone屏幕常亮不变暗的方法
制作iPhone的SOAP应用的详细教程
iPhone方块游戏拖动手势源码共享
用Openfeint为App添加在线排行功能
用Info.plist文件指定软件的运行设备
iPhone在线音乐盒,代码开源