ios的tabbar问题求详细解答,这个tabbar下面的图标突出一块怎么做的。谢谢各位大神。

问题描述

ios的tabbar问题求详细解答,这个tabbar下面的图标突出一块怎么做的。谢谢各位大神。

解决方案

自己自定义一个标签视图控制器吧:
自定义一个类继承自UITabBarController;
然后在该类的.m文件中自己写button和其点击事件间的切换

#import "MyTabBarController.h"

#define WIDTH (myView.frame.size.width / 4)
#define HEIGHT (myView.frame.size.height)

@interface MyTabBarController ()

//之前选中的按钮
@property(nonatomic, retain) UIButton *selectedBtn;

@end

@implementation MyTabBarController

  • (void)viewDidLoad {
    [super viewDidLoad];
    //删除现有的tabBar
    CGRect rect = self.tabBar.frame;
    [self.tabBar removeFromSuperview];

    //添加自己的视图
    UIView *myView = [[BaseView alloc] init];
    myView.backgroundColor = [UIColor whiteColor];
    myView.frame = rect;
    [self.view addSubview:myView];

    //主页发现按钮
    UIButton *findBtn = [UIButton buttonWithType:UIButtonTypeCustom];
    [findBtn setImage:[UIImage imageNamed:@"icon_home_n"] forState:UIControlStateNormal];
    [findBtn setImage:[UIImage imageNamed:@"icon_home_h"] forState:UIControlStateSelected];
    findBtn.tag = 1;
    findBtn.frame = CGRectMake(0, -20, WIDTH, HEIGHT); //y设成负值,高再设高一点就好了!!!
    //默认选中是发现按钮
    findBtn.selected = YES;
    [findBtn setTintColor:[UIColor colorWithRed:0.886 green:0.365 blue:0.247 alpha:1.000]];
    self.selectedBtn = findBtn;
    [myView addSubview:findBtn];

    UILabel *findLabel = [[UILabel alloc] initWithFrame:CGRectMake(WIDTH/2 -10, HEIGHT - 20, WIDTH, 20)];
    findLabel.text = @"发现";
    findLabel.textColor = [UIColor colorWithRed:0.804 green:0.325 blue:0.227 alpha:1.000];
    findLabel.font = [UIFont systemFontOfSize:10];
    findLabel.tag = 101;
    [myView addSubview:findLabel];
    [findLabel release];

    //搜索页
    UIButton *searchBtn = [UIButton buttonWithType:UIButtonTypeCustom];
    [searchBtn setImage:[UIImage imageNamed:@"icon_search_n"] forState:UIControlStateNormal];
    [searchBtn setImage:[UIImage imageNamed:@"icon_search_h"] forState:UIControlStateSelected];
    searchBtn.tag = 2;
    searchBtn.frame = CGRectMake(WIDTH, -20, WIDTH, HEIGHT);
    [myView addSubview:searchBtn];

    UILabel *searchLabel = [[UILabel alloc] initWithFrame:CGRectMake(WIDTH + WIDTH/2 -10, HEIGHT - 20, WIDTH, 20)];
    searchLabel.text = @"搜索";
    searchLabel.textColor = [UIColor grayColor];
    searchLabel.font = [UIFont systemFontOfSize:10];
    searchLabel.tag = 102;
    [myView addSubview:searchLabel];
    [searchLabel release];

    //收藏页
    UIButton *costBtn = [UIButton buttonWithType:UIButtonTypeCustom];
    [costBtn setImage:[UIImage imageNamed:@"iconfont-like"] forState:UIControlStateNormal];
    [costBtn setImage:[UIImage imageNamed:@"iconfont-like-selected"] forState:UIControlStateSelected];
    costBtn.tag = 3;
    costBtn.frame = CGRectMake(2 * WIDTH, -20, WIDTH, HEIGHT);
    [myView addSubview:costBtn];

    UILabel *collectLabel = [[UILabel alloc] initWithFrame:CGRectMake(2 * WIDTH + WIDTH/2 -10, HEIGHT - 20, WIDTH, 20)];
    collectLabel.text = @"收藏";
    collectLabel.textColor = [UIColor grayColor];
    collectLabel.font = [UIFont systemFontOfSize:10];
    collectLabel.tag = 103;
    [myView addSubview:collectLabel];
    [collectLabel release];

    //设置页
    UIButton *setUpBtn = [UIButton buttonWithType:UIButtonTypeCustom];
    [setUpBtn setImage:[UIImage imageNamed:@"icon_setting_n"] forState:UIControlStateNormal];
    [setUpBtn setImage:[UIImage imageNamed:@"icon_setting_h"] forState:UIControlStateSelected];
    setUpBtn.tag = 4;
    setUpBtn.frame = CGRectMake(3 * WIDTH, -20, WIDTH, HEIGHT);
    [myView addSubview:setUpBtn];

    UILabel *setUpLabel = [[UILabel alloc] initWithFrame:CGRectMake(3 * WIDTH + WIDTH/2 -10, HEIGHT - 20, WIDTH, 20)];
    setUpLabel.text = @"设置";
    setUpLabel.textColor = [UIColor grayColor];
    setUpLabel.font = [UIFont systemFontOfSize:10];
    setUpLabel.tag = 104;
    [myView addSubview:setUpLabel];
    [setUpLabel release];

    for (int i = 1; i <4; i++) {
    UIButton *btn = [self.view viewWithTag:i];
    [btn addTarget:self action:@selector(clickBtn:) forControlEvents:UIControlEventTouchUpInside];
    }
    }

#pragma mark -- 自定义tabBar按钮的点击事件
-(void)clickBtn:(UIButton *)sender {
//设置上一个按钮
self.selectedBtn.selected = NO;
UILabel *titleFormer = [self.view viewWithTag:self.selectedBtn.tag + 100];
titleFormer.textColor = [UIColor grayColor];

//设置选中状态
sender.selected = YES;
self.selectedBtn = sender;
UILabel *titleNow = [self.view viewWithTag:self.selectedBtn.tag + 100];
titleNow.textColor = [UIColor colorWithRed:0.804 green:0.325 blue:0.227 alpha:1.000];

//跳转相应的视图控制器
self.selectedIndex = sender.tag - 1;

}

解决方案二:

自己放ImageView等,把图片贴过去

解决方案三:

点击的时候将图片的frame变大不就行了

解决方案四:

自己在 tabbar 上添加一个 比 tabbar 稍高一点的view, 在 view 上添加四个按钮,把每个按钮的图片设置成图中需要的小猴子图片,点击按钮的时候去通知控制器改变 tabbar

时间: 2024-10-07 09:48:20

ios的tabbar问题求详细解答,这个tabbar下面的图标突出一块怎么做的。谢谢各位大神。的相关文章

不理解-各个选项是干嘛用的 求详细解答

问题描述 各个选项是干嘛用的 求详细解答 create new android Virtual Device 里面的各个选项怎么用呢? 解决方案 创建AVD有两种方法: 一种是直接在Eclipse平台中创建,一种是在命令行中创建 (两种方法都很简单) 首先在Eclispe中创建AVD 在Eclispe菜单栏中选择 'Window ' 选项,然后选择 'Android SDK and AVD Manager ' 然后点击New 来创建AVD 点击New 之后弹出 Create new Androi

一句shell表达式,求详细解答

问题描述 一句shell表达式,求详细解答 求分段详细解答,另外为什么表达式右边最外面用的是中文的单引号 SERVER_NAME=sed '/dubbo.application.name/!d;s/.*=//' conf/dubbo.properties | tr -d 'r' 解决方案 就你贴出的代码,没有看到什么中文的引号.都是半角的. 中间那些奇怪的符号应该是正则表达式,匹配非d开头,分号,字母s,任意字符,等号.

图片-Java新人求解答:自己制作一个网站,出现问题,求详细解答。

问题描述 Java新人求解答:自己制作一个网站,出现问题,求详细解答. 我自己制作了一个网站,该网页上设定了插入图片这一选项,可是当我插入一张名为 Peter_Jackson.jpg 的图片后,网页上没有显示, 而且myeclipse的console还报出了如下错误: java.io.FileNotFoundException: C:mysoftwareapache-tomcat-7.0.37webappsfriend2uploadpic_3E:David_LiupicturePeter_Jac

javascript-用myeclipse做了一个网站,报了500错误,求详细解答。

问题描述 用myeclipse做了一个网站,报了500错误,求详细解答. 用myeclipse10做了一个交友网站,注册完登陆后显示500错误,我觉得应该是路径错误, 但我不知道具体错误在哪里,求详细解答. 以下是我myeclipse中console后的错误报告: 信息: Server startup in 17270 ms service... 三月 22, 2016 10:33:24 上午 org.apache.catalina.core.StandardWrapperValve invok

新手-c++简单的学生成绩管理问题,求详细解答,谢谢!

问题描述 c++简单的学生成绩管理问题,求详细解答,谢谢! 因为在虚拟桌面写的代码,不能复制,只能截屏......非常感谢! 解决方案 你的问题是什么呢?代码运行不正确还是什么问题

服务器-关于NAT转换的……求详细解答!

问题描述 关于NAT转换的--求详细解答! 刚看了一本名为<深入理解IPV6>的书,上面提到ipv4里的NAT: NAT只有在客户端设备位于NAT之后,需要向服务器发起会话,建立客户端/服务端模式的通信时,才能很好地发挥其复用私有地址空间的功效. 我不能理解,如果多个客户端连接在NAT之后,同时向一个服务端发出请求,那么服务端如何区别他们呢? 解决方案 对于nat设备本身,它可以知道不同内网的地址,所以它可以区分.外网的服务器,通过端口区分.nat就是干这个的. 解决方案二: 参考:http:

axis2生成客户端代码-通过axis2生成的客户端代码都是些什么类,求详细解答

问题描述 通过axis2生成的客户端代码都是些什么类,求详细解答 如图中的类,求解救 解决方案 自动生成的代理类,保证了服务的请求和响应的接口

菜鸟 求解答-初学c语言,求详细解答。

问题描述 初学c语言,求详细解答. #include "stdio.h" int main(int argc, char* argv[]) { int plnt[] = {0x01234567,0x89abcdef}; short pShort = ((short)plnt)+1; char pChar = (char)(pShort + 1); printf("0x%xn",*pChar); return 0; }

bean-新手Spring错误,求详细解答

问题描述 新手Spring错误,求详细解答 出现这个错误,新手求指教怎么修改 : Error creating bean with name 'leavePersonManageBS': Injection of resource dependencies failed; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'leavePersonLi