UITabBar height in iOS 5

2020-06-28 03:58发布

问题:

With the new customization APIs in iOS 5, is it possible to increase the height of UITabBar? If not, what are some open source options if I want to target iOS 5? Thanks

回答1:

I would suggest the BCTabBarController. I used it in one of my projects and it works great. You would still have to customize it, though.



回答2:

My way of customizing UITabBarController's tabbar is to customize UITabBarController itself first.

UITabBarcontroller has two subviews inside. A UITransitionView and a UITabBar. UITransitionView is the area on the top half of the screen where you put your view controllers in.

In order to customize the height of the UITabbar, you also need to edit UITransitionView's frame. So, for instance if you want to change the heights, you can do;

[[tabbarController.view.subviews objectAtIndex:0] setFrame:CGRectMake(0, 0, 320, 440)];
[tabbarController.tabBar setFrame:CGRectMake(0, 440, 320, 50)];

This will create a 50 px height tabbar, (by default it is 48 px)



回答3:

You can write a category of UItabbar

here is the code :

.h file :

#import <UIKit/UIKit.h>

@interface UITabBar (NewSize)
- (CGSize)sizeThatFits:(CGSize)size;
@end

.m file :

#import "UITabBar+NewSize.h"

@implementation UITabBar (NewSize)
- (CGSize)sizeThatFits:(CGSize)size {
    CGSize newSize = CGSizeMake(size.width,44);
    return newSize;
}
@end

and then

#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!


回答4:

You cannot do that with the UITabBar. I would suggest that you create your own UIToolBarand make it appear like a tabBar, and you can add UIButtons to it and make them appear like tabBarItems.

It will appear like a tabBar and gives you a lot of room for customizations and you can also add more than 5 tabs to it and implement a "scroll" animation between the buttons. :)



回答5:

It's not possible with the UIAppearance proxy

The way I'd recommend doing it is using container ViewController methodology in UIViewController (It's under the heading Implementing a Container View Controller). Apple's docs basically tell you how to roll your own.