你需要設置edge insets
和iOS 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);
}
這個工作爲了我。希望這可以幫助! :)
你看過UITabBarItem方法,initWithTitle:image:selectedImage:? – rdelmar