1

我正在ios应用程序中工作,我需要自定义tabbar这样

首先,我viewcontrollers在导航控制器中创建了 5 个,然后将它们放入tabbbarcontroller

我用谷歌搜索了这个问题,我找到了解决方案

[self.tabBarItem setFinishedSelectedImage:<#(UIImage *)#> withFinishedUnselectedImage:<#(UIImage *)#>]

但它适用于 iOS 5,我需要适用于 iOS 4 和 iOS 5 的解决方案。

4

3 回答 3

1

对于在 ios4 中自定义选项卡栏,您需要为我们制作自定义选项卡栏的代码不可用,您可以参考此 Que。

如何自定义标签栏控制器

或者你也可以像这样制作完整的标签栏图像来做简单的逻辑在此处输入图像描述

在这里,我在 appdel did finish 方法上制作了一个图像视图,并在应用程序中完成了这样的操作。

self.imgV.frame=CGRectMake(0, 431, 320, 49);
[self.tabbarcontroller.view addSubview:self.imgV];

- (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController{
    NSUInteger index=[[tabBarController viewControllers] indexOfObject:viewController];
    NSString *deviceType = [UIDevice currentDevice].model;
    NSLog(@"Device%@",deviceType);

    if(UI_USER_INTERFACE_IDIOM()==UIUserInterfaceIdiomPad){
      //  self.imgV.frame=CGRectMake(0, 975, 768, 49);
        //[self.tabbarcontroller.view addSubview:self.imgV];

        switch (index) {
            case 0:
                self.imgV.image=[UIImage imageNamed:@"reservation_tab~iPad.png"];
                break;
            case 1:
                self.imgV.image=[UIImage imageNamed:@"place_order_tab~iPad.png"];
                break;
            case 2:
                self.imgV.image=[UIImage imageNamed:@"location_tab~iPad.png"];
                break;
            case 3:
                self.imgV.image=[UIImage imageNamed:@"favorite_tab~iPad.png"];
                break;
            case 4:

                self.imgV.image=[UIImage imageNamed:@"signature_dishes_tab~iPad.png"];

                break;
            case 5:
                self.imgV.image=[UIImage imageNamed:@"history_tab~iPad.png"];
                break;
            case 6:

                self.imgV.image=[UIImage imageNamed:@"contact_us_tab~iPad.png"];

                break;
            default:
                break;
        }

    }
    else{



    switch (index) {
        case 0:
            self.imgV.image=[UIImage imageNamed:@"reservation_tab.png"];
            break;
        case 1:
            self.imgV.image=[UIImage imageNamed:@"place_order_tab.png"];
            break;
        case 2:
            self.imgV.image=[UIImage imageNamed:@"location_tab.png"];
            break;
        case 3:
            self.imgV.image=[UIImage imageNamed:@"favorite_tab.png"];
            break;
        case 4:

                       self.imgV.image=[UIImage imageNamed:@"gallery_tab.png"];

            break;
        default:
            break;
    }
    }
    return YES;
}
于 2012-11-06T09:20:47.050 回答
0

试试这个粘贴它.h文件

      #import <UIKit/UIKit.h>
    @class MapViewController,MenuViewController;
    @interface UITabBar (ColorExtensions)
    - (void)recolorItemsWithColor:(UIColor *)color shadowColor:(UIColor *)shadowColor shadowOffset:(CGSize)shadowOffset shadowBlur:(CGFloat)shadowBlur;
    @end

    @interface UITabBarItem (Private)
    @property(retain, nonatomic) UIImage *selectedImage;
    - (void)_updateView;
    @end

    @interface SegmentedControlExampleAppDelegate : NSObject <UIApplicationDelegate> {

        UIWindow * window;
        UINavigationController * navigationController;
        NSMutableArray *breads;
        NSMutableArray *categorys;
        NSMutableArray *collections;
        NSString *databaseName;
        NSString *databasePath;
        MapViewController *mapViewController;

        MenuViewController *wvTutorial;


    }

    @property (nonatomic, retain) IBOutlet UIWindow * window;
    @property (nonatomic, retain) UINavigationController * navigationController;
    @property (nonatomic,retain) NSMutableArray *breads;
    @property (nonatomic,retain) NSMutableArray *categorys;
    @property (nonatomic,retain) NSMutableArray *collections;
    @property (nonatomic, retain) UITabBarController *tabBarController;
    @property (nonatomic, retain) MenuViewController *wvTutorial;


    @end

In .m file

    #import "SegmentedControlExampleAppDelegate.h"
    #import "SegmentManagingViewController.h"
    #import "sqlite3.h"
    #import "AtoZHomePageViewController.h"
    #import "CategoryViewHomePage.h"
    #import "CollectionsListHomePageViewController.h"
    #import "AboutUs.h"
    #import "StoreLocatorViewController.h"
    #import "UINavigationBar+CustomImage.h"
    #import "MenuViewController.h"
    @implementation UITabBar (ColorExtensions)

    - (void)recolorItemsWithColor:(UIColor *)color shadowColor:(UIColor *)shadowColor shadowOffset:(CGSize)shadowOffset shadowBlur:(CGFloat)shadowBlur
    {
        CGColorRef cgColor = [color CGColor];
        CGColorRef cgShadowColor = [shadowColor CGColor];
        for (UITabBarItem *item in [self items])
            if ([item respondsToSelector:@selector(selectedImage)] &&
                [item respondsToSelector:@selector(setSelectedImage:)] &&
                [item respondsToSelector:@selector(_updateView)])
            {
                CGRect contextRect;
                contextRect.origin.x = 0.0f;
                contextRect.origin.y = 0.0f;
                contextRect.size = [[item selectedImage] size];
                // Retrieve source image and begin image context
                UIImage *itemImage = [item image];
                CGSize itemImageSize = [itemImage size];
                CGPoint itemImagePosition; 
                itemImagePosition.x = ceilf((contextRect.size.width - itemImageSize.width) / 2);
                itemImagePosition.y = ceilf((contextRect.size.height - itemImageSize.height) / 2);
                UIGraphicsBeginImageContext(contextRect.size);
                CGContextRef c = UIGraphicsGetCurrentContext();
                // Setup shadow
                CGContextSetShadowWithColor(c, shadowOffset, shadowBlur, cgShadowColor);

                // Setup transparency layer and clip to mask
                CGContextBeginTransparencyLayer(c, NULL);
                CGContextScaleCTM(c, 1.0, -1.0);
                CGContextClipToMask(c, CGRectMake(itemImagePosition.x, -itemImagePosition.y, itemImageSize.width, -itemImageSize.height), [itemImage CGImage]);

                           // Fill and end the transparency layer
                CGContextSetFillColorWithColor(c, cgColor);
                contextRect.size.height = -contextRect.size.height;
                CGContextFillRect(c, contextRect);
                CGContextEndTransparencyLayer(c);



                // Set selected image and end context
                [item setSelectedImage:UIGraphicsGetImageFromCurrentImageContext()];
                UIGraphicsEndImageContext();
                // Update the view
                [item _updateView];



            }

    }
    @end

    @implementation SegmentedControlExampleAppDelegate

    @synthesize window,tabBarController, navigationController,breads,categorys,collections,wvTutorial;

    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
        databaseName = @"ProductsConnect_Master.sqlite";


        NSArray *documentPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
        NSString *documentsDir = [documentPaths objectAtIndex:0];
        databasePath = [documentsDir stringByAppendingPathComponent:databaseName];


        self.tabBarController = [[UITabBarController alloc] init];
        UIViewController *viewController = [[AboutUs alloc] initWithNibName:@"AboutUs" bundle:nil];
        UIViewController *viewController2 = [[StoreLocatorViewController alloc] initWithNibName:@"StoreLocatorViewController" bundle:nil];
        //UIViewController *viewController3 = [[MenuViewController alloc] initWithNibName:@"MenuViewController" bundle:nil];

        self.wvTutorial = [[MenuViewController alloc]initWithNibName:@"MenuViewController" bundle:nil];




        SegmentManagingViewController * segmentManagingViewController = [[SegmentManagingViewController alloc] init];
        self.navigationController = [[UINavigationController alloc] initWithRootViewController:segmentManagingViewController];

        tabBarController.viewControllers = [NSArray arrayWithObjects:navigationController,viewController ,viewController2,wvTutorial , nil]; 



        [[UITabBar appearance] 
         setTintColor: [UIColor colorWithRed:120.0f/255.0f green:69.0f/255.0f blue:50.0f/255.0f alpha:1.0f]];
        [[UITabBar appearance] setSelectedImageTintColor:[UIColor colorWithRed:255.0f/255.0f green:252.0f/255.0f blue:235.0f/255.0f alpha:1.0f]];

        //[[UITabBar appearance] 

        // setBackgroundColor: [UIColor colorWithRed:255.0f/255.0f green:252.0f/255.0f blue:235.0f/255.0f alpha:0.8f]];


        navigationController.title = NSLocalizedString(@"HomePage", @"HomePage");
        navigationController.tabBarItem.image = [UIImage imageNamed:@"logoSmall"];

        [[UIApplication sharedApplication] setStatusBarHidden:YES];

        UIImage *navImage = [UIImage imageNamed:@"logoSmall.png"];
        // self.navigationItem.setImage: navImage;

        [[navigationController navigationBar] performSelectorInBackground:@selector(setBackgroundImage:) withObject:navImage];

        // UIImage *navImage = [UIImage imageNamed:@"logoSmall.png"];
        //[[navigationController navigationBar] performSelectorInBackground:@selector(setBackgroundImage:) withObject:navImage];




        [self.window addSubview:tabBarController.view];
        [segmentManagingViewController release];
        //[window addSubview:self.navigationController.view];
        [window makeKeyAndVisible];

        return YES;
    }

我已经使用此代码对我来说很好。

于 2012-11-06T12:51:47.027 回答
0

AppDelegate.m文件中,添加以下代码。在那段代码中,我们创建了四个视图并将它们添加到选项卡控制器中。这些视图现在是空的,因为对于这个项目,我们不需要其中的任何内容。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

{

    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];

    UITabBarController *tabController = [[UITabBarController alloc] init];  


    UIViewController *viewController1 = [[UIViewController alloc] init];  


    UIViewController *viewController2 = [[UIViewController alloc] init];  


    UIViewController *viewController3 = [[UIViewController alloc] init];    


    UIViewController *viewController4 = [[UIViewController alloc] init];  

    tabController.viewControllers = [NSArray arrayWithObjects:viewController1, 

                                     viewController2, 

                                     viewController3, 

                                     viewController4, nil];

    self.window.rootViewController = tabController;  


    [self.window makeKeyAndVisible];

    return YES;

}

你可以在这里看到一个很好的教程

于 2012-11-06T09:16:56.067 回答