我们在做项目的过程中,会经常需要自定义tabbar。我今天刚好整理了一下,把自己的想法写出来和大家分享一下。
自定义Tabbar 首先我们新建一个继承于UITabBar的子类EzTabBar
EzTabBar.h文件内容
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 | import “EzTabBar.h” #define TABBAR_INSET 12 @implementation EzTabBar -( void )initialize { UIImageView * barv = [[UIImageView alloc]init]; self .barImage = barv; self .barImage.frame = CGRectMake(TABBAR_INSET, 0, SCREENWIDTH / 4.0f - (2 * TABBAR_INSET), 3); self .barImage.backgroundColor = COLOR(210,0,12,1); [ self addSubview: self .barImage]; } -( id )initWithCoder:( NSCoder *)aDecoder { self = [ super initWithCoder:aDecoder]; if ( self ) { [ self initialize]; } return self ; } -( id )initWithFrame:(CGRect)frame { self = [ super initWithFrame:frame]; if ( self ) { [ self initialize]; } return self ; } -(CGSize)sizeThatFits:(CGSize)size { CGSize sizeThatFits = [ super sizeThatFits:size]; sizeThatFits.height = 44; return sizeThatFits; } -( void )layoutSubviews { [ super layoutSubviews]; [ self bringSubviewToFront: self .barImage]; } -( void )setSelectedItem:(UITabBarItem *)selectedItem { [ super setSelectedItem:selectedItem]; NSInteger indexOfSelectedItem = [[ self items] indexOfObject:selectedItem]; [UIView animateWithDuration:.3 delay:.0 options:UIViewAnimationOptionCurveEaseInOut animations:^{ self .barImage.frame = CGRectMake(TABBAR_INSET + indexOfSelectedItem*(SCREENWIDTH / 4.0f), 0, self .barImage.frame.size.width, 3); } completion:^( BOOL finished){ }]; } @end 自定义TabbarViewController import “EzTabBarController.h” @interface EzTabBarController () @end @implementation EzTabBarController ( id )initWithNibName:( NSString )nibNameOrNil bundle:( NSBundle )nibBundleOrNil { self = [ super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; if ( self ) { // Custom initialization } return self ; } ( void )viewDidLoad { [ super viewDidLoad]; UITabBar *tabBar = self .tabBar; UITabBarItem *tabBarItem1 = [tabBar.items objectAtIndex:0]; UITabBarItem *tabBarItem2 = [tabBar.items objectAtIndex:1]; UITabBarItem *tabBarItem3 = [tabBar.items objectAtIndex:2]; UITabBarItem *tabBarItem4 = [tabBar.items objectAtIndex:3]; tabBarItem1.image = [[UIImage imageNamed:@”TabBarIconHome”] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]; tabBarItem1.selectedImage = [[UIImage imageNamed:@”TabBarIconHomeSelected”] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]; tabBarItem2.image = [[UIImage imageNamed:@”TabBarIconWardrobe”] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]; tabBarItem2.selectedImage = [[UIImage imageNamed:@”TabBarIconWardrobeSelected”] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]; tabBarItem3.image = [[UIImage imageNamed:@”TabBarIconMyShop”] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]; tabBarItem3.selectedImage = [[UIImage imageNamed:@”TabBarIconMyShopSelected”] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]; tabBarItem4.image = [[UIImage imageNamed:@”TabBarIconPersonal”] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]; tabBarItem4.selectedImage = [[UIImage imageNamed:@”TabBarIconPersonalSelected”] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]; self .view.backgroundColor = [UIColor whiteColor]; } -( void )viewDidAppear:( BOOL )animated{ [ super viewDidAppear:animated]; } #pragma mark - Segues -( void )prepareForSegue:(UIStoryboardSegue *)segue sender:( id )sender { [ super prepareForSegue:segue sender:sender]; if ([segue.identifier isEqualToString:@”SwitchToMyShopSegue”]) { [segue.destinationViewController setUserId:@”0”]; } else if ([segue.identifier isEqualToString:@”BaseOptionsSegue”]) { ((BaseOptionsForCreationViewController*)segue.destinationViewController).isFromFloatingButton = YES ; } } @end |