首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >自定义UITabBar项

自定义UITabBar项
EN

Stack Overflow用户
提问于 2014-05-02 06:42:34
回答 3查看 2.3K关注 0票数 1

对于每个TabBar项目,我都有一个简单的设计:

  • 背景颜色: firstTab宽度=屏幕(左)的1/3高度= tabBarHeight secondTab宽度=屏幕(中间)的1/3高度= tabBarHeight thirdTab宽度=屏幕的1/3 (右)高度= tabBarHeight
  • 以表格项的水平和垂直为中心的标题。

我发现了关于如何更改整个选项卡背景的不同文章,如下所示:

代码语言:javascript
运行
复制
UIImage* tabBarBackground = [UIImage imageNamed:@"tabbar.png"];
[[UITabBar appearance] setBackgroundImage:tabBarBackground];

我找到了每一张图片,但这并不能填满整个标签:

代码语言:javascript
运行
复制
[[tabBarController.tabBar.items objectAtIndex:0] setFinishedSelectedImage:[UIImage imageNamed:@"tabbaritem.png"] withFinishedUnselectedImage:[UIImage imageNamed:@"tabbaritem.png"]];
EN

回答 3

Stack Overflow用户

发布于 2014-05-02 06:54:35

代码语言:javascript
运行
复制
UITabBarItem *tab1 = [[UITabBarItem alloc] init];
tab1.image = [[UIImage imageNamed:@"home_icon.png"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
tab1.selectedImage = [[UIImage imageNamed:@"home_icon_selected.png"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
票数 2
EN

Stack Overflow用户

发布于 2014-05-02 07:13:13

更好的方法是创建一个subClass of UITabBarController

到changeBackGround颜色,

代码语言:javascript
运行
复制
 self.tabBar.backgroundColor = [UIColor redColor];

对于tintColor

代码语言:javascript
运行
复制
self.tabBar.barTintColor = [UIColor greenColor];

在“init”方法本身。

For seetTitle

创建一个数组

代码语言:javascript
运行
复制
//title

titleArray = [[NSMutableArray alloc]initWithObjects:@"Title 1",@"Title 2",@"Title 3", nil];

//image array

NSArray *imageArray = @[image1,image2,image3];



for (int i = 0; i< imageArray.count; i++)
  {
   UINavigationController *nav = [self.viewControllers objectAtIndex:i];
   [nav.tabBarItem setTitle:[titleArray objectAtIndex:i]];

   //You can adjust title position by adjust `titlePositionAdjustment`
   nav.tabBarItem.titlePositionAdjustment = UIOffsetMake(0, -15);

  //for add image on tabbr item for ios 7
  nav.tabBarItem.image = [[imageArray objectAtIndex:i]imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];

  }

在ios 6上添加图像

代码语言:javascript
运行
复制
nav.tabBarItem.image = [imageArray objectAtIndex:i];

在ios 7中检索选定的图像

代码语言:javascript
运行
复制
nav.tabBarItem.image = [imageArray objectAtIndex:i];

适用于ios 6

代码语言:javascript
运行
复制
nav.tabBarItem.selectedImage = [imageArraySelected objectAtIndex:i];

调整图像EdgeInset

代码语言:javascript
运行
复制
nav.tabBarItem.imageInsets = UIEdgeInsetsMake(14,0.0, -14,-2);

用于添加标题Attibutes

代码语言:javascript
运行
复制
[nav.tabBarItem setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:[UIColor whiteColor],NSForegroundColorAttributeName,[UIFont fontWithName:@"Helvetica-Bold" size:14.0f],NSFontAttributeName, nil] forState:UIControlStateNormal];
票数 2
EN

Stack Overflow用户

发布于 2014-05-02 06:47:06

你可以这样做

代码语言:javascript
运行
复制
 UIImage *tabBackground = [[UIImage imageNamed:@"tabbg.png"]
 resizableImageWithCapInsets:UIEdgeInsetsMake(0, 0, 0, 0)];

 [[UITabBar appearance] setBackgroundImage:tabBackground];


 UITabBarItem *tabBarItem1 = [tabbar.items objectAtIndex:0];
 UITabBarItem *tabBarItem2 = [tabbar.items objectAtIndex:1];
 UITabBarItem *tabBarItem3 = [tabbar.items objectAtIndex:2];

 tabBarItem1.title = @"one";
 tabBarItem2.title = @"Two";
 tabBarItem3.title = @"Three";

 [tabbar setSelectedItem:[tabbar.items objectAtIndex:0]];
 [tabBarItem1 setFinishedSelectedImage:[UIImage imageNamed:@"one.png"] withFinishedUnselectedImage:[UIImage imageNamed:@"one_active.png"]];
 [tabBarItem2 setFinishedSelectedImage:[UIImage imageNamed:@"Two".png"] withFinishedUnselectedImage:[UIImage imageNamed:@"Two_active.png"]];
    [tabBarItem3 setFinishedSelectedImage:[UIImage imageNamed:@"Three.png"] withFinishedUnselectedImage:[UIImage imageNamed:@"Three_active.png"]];
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23422279

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档