iPhone的自定义选项卡栏将选项卡纵向更改为横向

时间:2011-03-13 22:07:32

标签: iphone objective-c xcode uitabbarcontroller xcode4

我正在制作一个标签栏应用程序,我不仅要在底部有一个自定义栏,还要在用户处于纵向或横向模式时更改按钮的功能。

例如,用户垂直拿着iphone = 3个标签(a,b,c),但是用户侧翻电话,标签栏现在填充了2个标签(d,e),这些标签对齐了/向下在屏幕左侧,以便用户可以阅读它们。

我已经研究过UITabBarController类的子类,但感觉就像我想要的那样是不可能的。我想知道...

1)我怎样才能做到这一点?

2)在将应用程序推送到App Store时,我自己的标签栏会出现问题吗?

2 个答案:

答案 0 :(得分:1)

我认为实现您描述的内容不应该是应用商店的问题,只要您的实现不会令人困惑并且不会“破坏”标准的标签栏行为。换句话说,如果它看起来像标准的Apple控件或类似,它应该以非常类似的方式运行,而不是对熟悉标签栏的用户“破坏”。 Apple do 让你在UI控件方面有一些余地和创造力,如果你有点小心不要混淆或烦扰用户。

至于你的实现,子类化UITabBarController不是一个很好的方法,我同意。要实现自定义tabbar,请从Apple的书中删除一些内容,编写一个UIViewController子类,根据UITabBarController的工作原理实现所描述的内容(但避免以任何方式实际使用Apple的UITabBarController)。

您的CustomTabBarController(为方便起见,我们称之为)基本上应该为横向和纵向模式项目收集UIViewControllers,图标和描述文本的集合。您需要在CustomTabBarController中检测旋转事件并将它们传递给当前显示的实际UIViewController - 并且还会有其他连线,例如传递viewDidAppear消息等。

一个好的灵感和暗示可能是关注其他人对UIViewController聚合器的实现。例如:

http://mattgemmell.com/2010/07/31/mgsplitviewcontroller-for-ipad

答案 1 :(得分:0)

很棒的建议!不幸的是,我不相信自己能够正确地实现所有这些......我只是在目标中编码 - c为6mo。现在。我确实找到并成功使用了我认为其他人可能会发现有用的内容是以下链接:

http://idevrecipes.com/2010/12/17/twitter-app-tab-bar-animation/

这里的人使用他们自己的自定义标签栏,这本身就很好看。这允许我动态编辑条本身上存在的按钮数量,以及与这些按钮对应的图像和标签栏本身的高度。另外,我使用了包含我的标签栏的View Controller Class的通知监听器来告诉用户何时翻转iphone。在翻转时,我以不同方式设置标签栏,并使用新项目/视图控制器重新加载。

[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(didRotate:) name:UIDeviceOrientationDidChangeNotification object:nil];

为了解决方向差异,我只需将标签栏上显示的图像翻转90度,无论其翻转方式如何,所以我可以通过4种不同的方式设置条形图上的项目。

感谢您的建议。如果我有点勇敢,我可能会尝试自己编写自定义标签栏!