Dev
Dev

Reputation: 3945

Custom Tabbar issue

My application contains tabbar and status bar. The tab bar is constructed like buttons with background image and added this buttons on the tabbar. The problem is, the buttons are having a height 47. But our default tabar is of height 49. So there is a gap showing between the tabbar and view. In the xib I had tried to change the frame size of the view. but it is not possible. By defualt it is coming 411. How can I fix this issue? Is there any way to create a custom tabbar?

here is my code for tabbar

viewController1 *viewController1Obj = [[viewController1 alloc] initWithNibName:@"viewController1" bundle:nil];
viewController2 *viewController2Obj = [[viewController2 alloc] initWithNibName:@"viewController2" bundle:nil];

viewController3 *viewController3Obj = [[viewController3 alloc] initWithNibName:@"viewController3" bundle:nil];
viewController4 *viewController4Obj = [[viewController4 alloc] initWithNibName:@"viewController4" bundle:nil];
viewController5 *viewController5Obj = [[viewController5 alloc] initWithNibName:@"viewController5" bundle:nil];

UINavigationController *nav1=[[UINavigationController alloc]initWithRootViewController:viewController1Obj];
UINavigationController *nav2=[[UINavigationController alloc]initWithRootViewController:viewController2Obj];
UINavigationController *nav3=[[UINavigationController alloc]initWithRootViewController:viewController3Obj];
UINavigationController *nav4=[[UINavigationController alloc]initWithRootViewController:viewController4Obj];
UINavigationController *nav5=[[UINavigationController alloc]initWithRootViewController:viewController5Obj];

nav1.navigationBarHidden=YES;
nav2.navigationBarHidden=YES;
nav3.navigationBarHidden=YES;
nav4.navigationBarHidden=YES;
nav5.navigationBarHidden=YES;

self.tabBarController = [[UITabBarController alloc] init];

self.tabBarController.viewControllers = [NSArray arrayWithObjects:nav1, nav2,nav3,nav4 ,nav5, nil];

self.tabBarController.tabBar.frame = CGRectMake(0.0f, self.tabBarController.tabBar.frame.origin.y, 320.0f, 47.0f);

[self.window addSubview:self.tabBarController.view];

self.tabBarController.view.backgroundColor = [UIColor redColor];


self.tabBtn1 = [[UIButton alloc] initWithFrame:CGRectMake(0.0f, 0.0f, 64.0f, 47.0f)];
[self.tabBtn1 setImage:[UIImage imageNamed:@"button1.png"] forState:0];
[self.tabBtn1 setTag:77777];
self.tabBtn1.adjustsImageWhenHighlighted = NO;
[self.tabBtn1 addTarget:self action:@selector(btnPressed:) forControlEvents:UIControlEventTouchUpInside];

self.tabBtn2 = [[UIButton alloc] initWithFrame:CGRectMake(64.0f, 0.0f, 64.0f, 47.0f)];
[self.tabBtn2 setImage:[UIImage imageNamed:@"button2.png"] forState:0];
[self.tabBtn2 setTag:77778];
self.tabBtn2.adjustsImageWhenHighlighted = NO;
[self.tabBtn2 addTarget:self action:@selector(btnPressed:) forControlEvents:UIControlEventTouchUpInside];

self.tabBtn3 = [[UIButton alloc] initWithFrame:CGRectMake(128.0f, 0.0f, 64.0f, 47.0f)];
[self.tabBtn3 setImage:[UIImage imageNamed:@"button3.png"] forState:0];
[self.tabBtn3 setTag:77779];
self.tabBtn3.adjustsImageWhenHighlighted = NO;
[self.tabBtn3 addTarget:self action:@selector(btnPressed:) forControlEvents:UIControlEventTouchUpInside];

self.tabBtn4 = [[UIButton alloc] initWithFrame:CGRectMake(192.0f, 0.0f, 64.0f, 47.0f)];
[self.tabBtn4 setImage:[UIImage imageNamed:@"button4.png"] forState:0];
[self.tabBtn4 setTag:77780];
self.tabBtn4.adjustsImageWhenHighlighted = NO;
[self.tabBtn4 addTarget:self action:@selector(btnPressed:) forControlEvents:UIControlEventTouchUpInside];

self.tabBtn5 = [[UIButton alloc] initWithFrame:CGRectMake(256.0f, 0.0f, 64.0f, 47.0f)];
[self.tabBtn5 setImage:[UIImage imageNamed:@"button5.png"] forState:0];
[self.tabBtn5 setTag:77781];
self.tabBtn5.adjustsImageWhenHighlighted = NO;
[self.tabBtn5 addTarget:self action:@selector(btnPressed:) forControlEvents:UIControlEventTouchUpInside];

[self.tabBarController.tabBar addSubview:self.tabBtn1];
[self.tabBarController.tabBar addSubview:self.tabBtn2];
[self.tabBarController.tabBar addSubview:self.tabBtn3];
[self.tabBarController.tabBar addSubview:self.tabBtn4];
[self.tabBarController.tabBar addSubview:self.tabBtn5];

and in the gap which Iam getting is showing red color.

Upvotes: 0

Views: 605

Answers (3)

Dev
Dev

Reputation: 3945

I solved the issue by setting the frame of UITransitionView in the UITabbarController subview as

[[[self.tabBarController.view subviews]objectAtIndex:0] setFrame:CGRectMake(0, 0, 320, 521)];

Now the gap has gone.

Upvotes: 0

Ilker Baltaci
Ilker Baltaci

Reputation: 11787

i am not sure how you created the tabbar but maybe this link can help you. It sets the height of the bar to abother value than 49

https://gist.github.com/869331

Or you can also check this thread

How could I create a custom tabbar similar to this

Upvotes: 0

IronManGill
IronManGill

Reputation: 7226

Yes you can create your own custom tab bar. Use the following links to solve your issue.

iPhone: How can I build my own TabBar?

iOS custom tabbar

How could I create a custom tabbar similar to this

http://kurrytran.blogspot.in/2011/10/ios-5-tutorial-creating-custom-tab-bar.html

Im giving you a link which has pre-made custom tab bars that will help you here .

http://www.cocoacontrols.com/search?utf8=%E2%9C%93&q=tabbar

Upvotes: 1

Related Questions