2014-06-26 48 views
0

我想知道如何完全将UITabBar按钮完全替换为图片(即图片下方没有任何文字,类似于Instagram或Polar中的样式)。如何在UIITabBar中将完整图像设置为按钮?

我试过按照guide中的建议使用[tabBarItem1 setFinishedSelectedImage:[UIImage imageNamed:@"option1Selected.png"] withFinishedUnselectedImage:[UIImage imageNamed:@"option1.png"]];,但它仍然包含底部的文字。帮助表示赞赏 - 谢谢!

enter image description hereenter image description here

+0

你看过UITabBarItem方法,initWithTitle:image:selectedImage:? – rdelmar

回答

1

你需要设置edge insetsiOS 7及以后的版本使用不同的image rendering options。我用一个简单的OS_version check并执行如下它:

定义一个常量,OS_version检查:

#define DEVICE_SYSTEM_VERSION [[[UIDevice currentDevice] systemVersion] floatValue] 

然后用下面的代码在你的基地的viewController:

UIImage *yourSelectedImage = [UIImage imageNamed:@"option1Selected.png"]; 
UIImage *yourUnSelectedImage = [UIImage imageNamed:@"option1.png"]; 

viewController.tabBarItem = [[UITabBarItem alloc] init]; 

if (DEVICE_SYSTEM_VERSION >= 7) 
{ 
    [yourViewController.tabBarItem setImage:[yourUnSelectedImage imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]]; 
    [yourViewController.tabBarItem setSelectedImage:[yourSelectedImage imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]]; 
} 
else 
{ 
    [yourViewController.tabBarItem setImage:yourUnSelectedImage]; 
    [yourViewController.tabBarItem setFinishedSelectedImage:yourSelectedImage withFinishedUnselectedImage:image]; 
} 


// set the title to be an empty string 
yourViewController.tabBarItem.title = @""; 

// set edge insets so that the image occupies the entire area 
if (DEVICE_SYSTEM_VERSION <= 7) 
{ 
    yourViewController.tabBarItem.imageInsets = UIEdgeInsetsMake(8, 0, -8, 0); 
} 
else 
{ 
    yourViewController.tabBarItem.imageInsets = UIEdgeInsetsMake(0, 0, 0, 0); 
} 

这个工作为了我。希望这可以帮助! :)

+0

这与一些小的调整工作 - 谢谢! – daspianist

相关问题