2013-01-20 46 views
0

我想製作一個自定義選項卡欄。我已經使用了setFinishedSelectedImage:finishedUnselectedImage:方法,它刪除蘋果對uitabbaritems的默認光澤效果。這裏是我的代碼:奇怪的UITabBarItem定位

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    [self customizeInterface]; 

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


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

    UIViewController *viewController1 = [[NewsViewController alloc] initWithNibName:@"NewsViewController" bundle:nil]; 
    UITabBarItem *tab1 = [[UITabBarItem alloc] initWithTitle:nil 
                 image:[UIImage imageNamed:nil] tag:1]; 
    [viewController1 setTabBarItem:tab1]; 
    UITabBarItem *item = [[UITabBarItem alloc] init]; 

    [tab1 setFinishedSelectedImage:[UIImage imageNamed:@"icon_news.png"] withFinishedUnselectedImage:[UIImage imageNamed:@"icon_news.png"]]; 
    _tabBarController.tabBarItem = item; 

    UIViewController *viewController2 = [[FirstViewController alloc] initWithNibName:@"FirstViewController" bundle:nil]; 
    UITabBarItem *tab2 = [[UITabBarItem alloc] initWithTitle:nil 
                 image:[UIImage imageNamed:nil] tag:2]; 
    [viewController2 setTabBarItem:tab2]; 
    UITabBarItem *item1 = [[UITabBarItem alloc] init]; 

    [tab2 setFinishedSelectedImage:[UIImage imageNamed:@"icon_programme.png"] withFinishedUnselectedImage:[UIImage imageNamed:@"icon_programme.png"]]; 
    _tabBarController.tabBarItem = item1; 


    UIViewController *viewController3 = [[SecondViewController alloc] initWithNibName:@"SecondViewController" bundle:nil]; 
    UITabBarItem *tab3 = [[UITabBarItem alloc] initWithTitle:nil 
                 image:[UIImage imageNamed:nil] tag:3]; 
    [viewController3 setTabBarItem:tab3]; 
    UITabBarItem *item2 = [[UITabBarItem alloc] init]; 

    [tab3 setFinishedSelectedImage:[UIImage imageNamed:@"icon_map.png"] withFinishedUnselectedImage:[UIImage imageNamed:@"icon_map.png"]]; 
    _tabBarController.tabBarItem = item2; 

    UIViewController *viewController4 = [[ThirdViewController alloc] initWithNibName:@"ThirdViewController" bundle:nil]; 
    UITabBarItem *tab4 = [[UITabBarItem alloc] initWithTitle:nil 
                 image:[UIImage imageNamed:nil] tag:4]; 
    [tab4 setFinishedSelectedImage:[UIImage imageNamed:@"icon_venues.png"] withFinishedUnselectedImage:[UIImage imageNamed:@"icon_venues.png"]]; 
    [viewController4 setTabBarItem:tab4]; 
    UITabBarItem *item3 = [[UITabBarItem alloc] init]; 

    [item3 setFinishedSelectedImage:[UIImage imageNamed:@"icon_venues.png"] withFinishedUnselectedImage:[UIImage imageNamed:@"icon_venues.png"]]; 
    _tabBarController.tabBarItem = item3; 

    UIViewController *viewController5 = [[FourthViewController alloc] initWithNibName:@"FourthViewController" bundle:nil]; 
    UITabBarItem *tab5 = [[UITabBarItem alloc] initWithTitle:nil 
                 image:[UIImage imageNamed:nil] tag:5]; 
    [viewController5 setTabBarItem:tab5]; 
    UITabBarItem *item4 = [[UITabBarItem alloc] init]; 

    [tab5 setFinishedSelectedImage:[UIImage imageNamed:@"icon_more.png"] withFinishedUnselectedImage:[UIImage imageNamed:@"icon_more.png"]]; 
    _tabBarController.tabBarItem = item4; 

    tabController.viewControllers = [NSArray arrayWithObjects:viewController1, 
            viewController2, 
            viewController3, 
            viewController4, 
            viewController5, nil]; 


    self.window.rootViewController = tabController; 
    [self.window makeKeyAndVisible]; 
    return YES; 
} 

- (void)customizeInterface 
{ 
    UIImage* tabBarBackground = [UIImage imageNamed:@"navbar_bodyreal.png"]; 
    [[UITabBar appearance] setBackgroundImage:tabBarBackground]; 

    [[UITabBar appearance] setSelectionIndicatorImage:[UIImage imageNamed:@"navbar_object_current.png"]]; 

} 

問題是圖標端口上方的標籤欄。 任何想法?

感謝

TabBar

+0

你上面的標籤欄是什麼意思? –

回答

0

您應該只設置相應的UIViewConroller.Remove線的tabbaritem財產。

_tabBarController.tabBarItem = itemx; 

除了tabbar項目的最佳分辨率是30x30像素。

http://www.idev101.com/code/User_Interface/sizes.html

+0

看看我的編輯(圖片)。我不明白你的意思是設置相應UIViewConroller的tabbaritem屬性。刪除行。 – DavidG

+0

什麼是你的圖標分辨率似乎比30x30大 –

+0

我的意思是你不設置tabbar控制器的tabbaritem屬性。刪除行_tabBarController.tabBarItem = item;所有項目 –