当tabbar控制器支持iPhone中的所有方向时,如何为tabbar项设置图像

时间:2013-02-04 08:28:20

标签: iphone objective-c ios6 uitabbarcontroller uitabbaritem

我是IOS开发的新手。我在动态设置Tabbar项目的图像时面临一个问题。我已经对UITabbarItem进行了细分。

@interface CustomTabBarItem : UITabBarItem
{
    UIImage *customHighlightedImage;
    UIImage *customStdImage;
}

@property (nonatomic, retain) UIImage *customHighlightedImage;
@property (nonatomic, retain) UIImage *customStdImage;

@end 

并将我的tabbarcontroller添加到窗口。

[_tabBarController setViewControllers: [[NSArray alloc] initWithObjects:1,2,3,4,nil] animated: YES];
_tabBarController.selectedIndex = 0;
_tabBarController.delegate = self;
_tabBarController.view.backgroundColor=[UIColor colorWithPatternImage:[UIImage imageNamed:@"tabbarBackground.png"]];
[self.window addSubview:_tabBarController.view];
self.window.rootViewController = _tabBarController;
[self.window makeKeyAndVisible];

我的Tabbar控制器完美支持所有方向。但问题是当我旋转设备时,如何设置tabbar项目的图像以用于设备的当前方向。为每个选项卡自动设置框架,但我的图像没有。我的应用程序中有四个选项卡。我在网站上搜索过很多但是无法得到合适的解决方案。

修改

这是我用于设置图像的代码。

 tabBarItemBrowse=[[CustomTabBarItem alloc] init];
    tabBarItemBrowse.imageInsets=UIEdgeInsetsMake(6, 0, -6, 0);
    //    tabBarItemBrowse.customStdImage=[UIImage imageNamed:@"browser.png"];
    //    tabBarItemBrowse.customHighlightedImage=[UIImage imageNamed:@"browser_act.png"];
    if ( [UIApplication sharedApplication].statusBarOrientation==UIInterfaceOrientationPortrait ||  [UIApplication sharedApplication].statusBarOrientation == UIInterfaceOrientationPortraitUpsideDown)
    {
        tabBarItemBrowse.customStdImage=[UIImage imageNamed:@"browser.png"];
        tabBarItemBrowse.customHighlightedImage=[UIImage imageNamed:@"browser_act.png"];
    }

    else
    {
        tabBarItemBrowse.customStdImage=[UIImage imageNamed:@"browser568.png"];
        tabBarItemBrowse.customHighlightedImage=[UIImage imageNamed:@"browser_act568.png"];

    }
    self.viewController = [[ViewController alloc] initWithNibName:@"ViewController" bundle:nil];
    BrowseNav  = [[CustomNavigationControllerViewController alloc] initWithRootViewController:self.viewController];
    BrowseNav.tabBarItem = tabBarItemBrowse;
    BrowseNav.navigationBar.tintColor = [UIColor blackColor];
    BrowseNav.navigationBarHidden=YES;
    [tabBarItemBrowse release];

1 个答案:

答案 0 :(得分:1)

试试这个,   首先,您必须拍摄两张图像,一张用于纵向模式,另一张用于横向模式。当您的设备更改方向时,应调用 - (void)willRotateToInterfaceOrientation方法。根据方向,您可以设置tabbar项目图像。

   -(void)willRotateToInterfaceOrientation: (UIInterfaceOrientation)orientation duration: (NSTimeInterval)duration
{
if (UIInterfaceOrientationIsPortrait(self.interfaceOrientation)) 
{

  yourViewController.tabBarItem.image = [UIImage imageNamed:@"portrait.png"] ;
}
 else

{

  yourViewController.tabBarItem.image = [UIImage imageNamed:@"Landscape.png"] ;

}

}