使用 iOS 5 中新的自定义 API,是否可以增加 UITabBar 的高度?如果不是,如果我想针对 iOS 5,有哪些开源选项?谢谢
5 回答
我自定义UITabBarController的tabbar的方式是先自定义UITabBarController本身。
UITabBarcontroller 里面有两个子视图。一个 UITransitionView 和一个 UITabBar。UITransitionView 是屏幕上半部分放置视图控制器的区域。
为了自定义UITabbar的高度,还需要编辑UITransitionView的frame。所以,例如,如果你想改变高度,你可以这样做;
[[tabbarController.view.subviews objectAtIndex:0] setFrame:CGRectMake(0, 0, 320, 440)];
[tabbarController.tabBar setFrame:CGRectMake(0, 440, 320, 50)];
这将创建一个 50 px 高度的标签栏,(默认为 48 px)
你可以写一个UItabbar的类别
这是代码:
.h 文件:
#import <UIKit/UIKit.h>
@interface UITabBar (NewSize)
- (CGSize)sizeThatFits:(CGSize)size;
@end
.m 文件:
#import "UITabBar+NewSize.h"
@implementation UITabBar (NewSize)
- (CGSize)sizeThatFits:(CGSize)size {
CGSize newSize = CGSizeMake(size.width,44);
return newSize;
}
@end
进而
#import "UITabBar+NewSize.h"
self.tabBarController = [[UITabBarController alloc] init];
[self.tabBarController.tabBar sizeThatFits:CGSizeMake(320, 44)];
self.tabBarController.tabBar.shadowImage = [[UIImage alloc]init]; //delete the default tabbar shadow!
你不能用UITabBar
. 我建议您创建自己的UIToolBar
并使其看起来像一个 tabBar,您可以添加UIButtons
到它并使它们看起来像tabBarItems
.
它看起来像一个tabBar
,并为您提供了很大的自定义空间,您还可以向其添加超过 5 个选项卡并在按钮之间实现“滚动”动画。:)
UIAppearance 代理不可能
我建议这样做的方法是在 UIViewController 中使用容器 ViewController 方法(它位于实现容器视图控制器的标题下)。Apple 的文档基本上告诉你如何自己动手。
我会建议BCTabBarController。我在我的一个项目中使用了它,效果很好。不过,您仍然需要对其进行自定义。