定制使UITabBarController的tabbar选中tabbaritem时不高亮以及换背景色(支持iPad旋转)/IOS5&IOS4

来源:互联网 发布:网络电视直播大全 编辑:程序博客网 时间:2024/05/18 22:15

(注:IOS5有新的API可以实现这些功能,这里这样搞是为了支持IOS4.)

/* * @brief 定制的tabbar. */#import <UIKit/UIKit.h>@interface XUTabBarController : UITabBarController{@private    UIView * bgView4TabBar_;}@end

#import "XUTabBarController.h"@interface XUTabBarController()@property(nonatomic, retain) UIView * bgView4TabBar;- (void)customTabBarBackgroundColor;- (void)setNoHighlightTabBar;@end@implementation XUTabBarController@synthesize bgView4TabBar = bgView4TabBar_;- (void)dealloc{    [bgView4TabBar_ release];    [super dealloc];}- (void)viewDidLoad{    [super viewDidLoad];    [self customTabBarBackgroundColor];}- (void)viewDidUnload{    [super viewDidUnload];    self.bgView4TabBar = nil;}#pragma mark - For iPad Rotate- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration{    if(UIU_IsIPad)    {        CGRect appFrame = [[UIScreen mainScreen] applicationFrame];        CGRect frame = self.tabBar.frame;        frame.origin.x = 0;        frame.origin.y = 0;        frame.size.width = (toInterfaceOrientation == UIInterfaceOrientationLandscapeLeft                             || toInterfaceOrientation == UIInterfaceOrientationLandscapeRight)        ? /*横屏*/ appFrame.size.height + 20         : appFrame.size.width + 20;        self.bgView4TabBar.frame = frame;    }}- (void)viewWillAppear:(BOOL)animated{    [super viewWillAppear:animated];        //    [self willRotateToInterfaceOrientation:self.interfaceOrientation duration:0];}#pragma mark - NoHighlightTab- (void)setSelectedIndex:(NSUInteger)index{    [super setSelectedIndex:index];    [self setNoHighlightTabBar];}- (void)setSelectedViewController:(UIViewController *)selectedViewController{    [super setSelectedViewController:selectedViewController];    [self setNoHighlightTabBar];}- (void)setNoHighlightTabBar{    int tabCount = [self.viewControllers count] > 5 ? 5 : [self.viewControllers count];    NSArray * tabBarSubviews = [self.tabBar subviews];    for(int i = [tabBarSubviews count] - 1; i > [tabBarSubviews count] - tabCount - 1; i--)    {        for(UIView * v in [[tabBarSubviews objectAtIndex:i] subviews])        {            if(v && [NSStringFromClass([v class]) isEqualToString:@"UITabBarSelectionIndicatorView"])            {//the v is the highlight view.                [v removeFromSuperview];                break;            }        }    }}#pragma mark - Custom TabBar Background Color- (void)customTabBarBackgroundColor{    ///给tabbar换背景色    //    //frame    CGRect appFrame = [[UIScreen mainScreen] applicationFrame];    CGRect frame = self.tabBar.frame;    frame.origin.x = 0;    frame.origin.y = 0;    frame.size.width = (self.interfaceOrientation == UIInterfaceOrientationLandscapeLeft                         || self.interfaceOrientation == UIInterfaceOrientationLandscapeRight)    ? /*横屏*/ appFrame.size.height + 20     : appFrame.size.width + 20;     //bg color.    #define useTintColor 1    #if useTintColor    self.bgView4TabBar = [[[UINavigationBar alloc] initWithFrame:frame] autorelease];    ((UINavigationBar *)self.bgView4TabBar).tintColor = XX_TabBgColor;        #else    self.bgView4TabBar = [[[UIView alloc] initWithFrame:frame] autorelease];    self.bgView4TabBar.backgroundColor = XX_TabBgColor;    #endif    //add to.    [self.tabBar insertSubview:self.bgView4TabBar atIndex:     self.tabBar.subviews.count - (self.viewControllers.count > 5 ? 5 : self.viewControllers.count)     ];}@end

转贴:http://www.cnblogs.com/xiaouisme/archive/2012/03/21/2410820.html

原创粉丝点击