小工具      在线工具  汉语词典  css  js  c++  java

ios自定义下划线标签切换按钮

IOS系统方法&&常用控件&&GitHub资源学习 额外说明

收录于:43天前

1.创建两个Tab Bar来切换TabBar

#pragma mark -- 创建顶部Tab切换按钮
- (void)createTopTabBarSegment
{
    if(!_segmentLineView)
    {
        _segmentLineView = [[UIView alloc] initWithFrame:CGRectMake((kDEVICEWIDTH - TOPTABBARWIDTH*2 - 35)/2.0, 20+38, TOPTABBARWIDTH, 2)];
        _segmentLineView.backgroundColor = loadColor(@"0093ff");
        [self.view addSubview:_segmentLineView];
    }
    
    //多少个tab
    for (NSInteger i = 0; i < _segmentTitleArray.count; i++)
    {
        UIButton * segmentButton = [UIButton buttonWithType:UIButtonTypeCustom];
        segmentButton.frame = CGRectMake((kDEVICEWIDTH - TOPTABBARWIDTH*2 - 35)/2.0 + TOPTABBARWIDTH*i, 20, TOPTABBARWIDTH, 40);
        segmentButton.tag = 9999 + i;
        [segmentButton setTitle:[_segmentTitleArray objectAtIndex:i] forState:UIControlStateNormal];
        [segmentButton setTitle:[_segmentTitleArray objectAtIndex:i] forState:UIControlStateSelected];
        [segmentButton  setTitleColor:TFCOLOR_68758E forState:UIControlStateNormal];
        [segmentButton  setTitleColor:loadColor(@"0093ff")  forState:UIControlStateSelected];
        segmentButton.titleLabel.font = loadFont(18.f);
        [segmentButton addTarget:self action:@selector(didTopTabSelectClick:) forControlEvents:UIControlEventTouchUpInside];
        [self.view addSubview:segmentButton];
        if (i == 0)//默认选中第一个tab
        {
            _selectedTabBtn = segmentButton;
            [segmentButton setSelected:YES];
        }
    }
}

#pragma mark --  顶部tab选择事件
- (void)didTopTabSelectClick:(UIButton*)sender
{
    _segmentLineView.frame = CGRectMake((kDEVICEWIDTH - TOPTABBARWIDTH*2 - 35)/2.0 + TOPTABBARWIDTH * (sender.tag - 9999), 20+38, TOPTABBARWIDTH, 2);
    _selectedTabBtn.selected = !_selectedTabBtn.selected;
    sender.selected = !sender.selected;
    _selectedTabBtn = sender;
    
    if (sender.tag == 9999)
    {
        self.currentSelectedTabIndex = 0;
    }
    else if (sender.tag == 10000)
    {
   
        self.currentSelectedTabIndex = 1;
}}

//清除顶部的tabBar UI上的数据
- (void)clearTopTabBarSegment
{ //先将顶部的View移除掉,再去添加 
  UIButton *ljBtn = (UIButton*)[self.view viewWithTag:9999];
 if (ljBtn) { [ljBtn removeFromSuperview]; }
 UIButton *ljBtn1 = (UIButton*)[self.view viewWithTag:10000];
 if (ljBtn1) { [ljBtn1 removeFromSuperview]; } 
 if(_segmentLineView) { [_segmentLineView removeFromSuperview]; _segmentLineView = nil; }}


2. 当从第一个页面里面的某一个button切换到第二个tab时,可以这样处理

#pragma mark -- 查看按钮点击
- (void)aroundClicked
{
    CHDebugLog(@"%s",__FUNCTION__);
    
    if (_selectedTabBtn.tag == 9999)
    {
        if ([self respondsToSelector:@selector(didTopTabSelectClick:)])
        {
             UIButton *ljBtn1 = (UIButton*)[self.view viewWithTag:10000];//将当前页面里面的第二个tab找到传过去
             [self performSelector:@selector(didTopTabSelectClick:) withObject:ljBtn1];
        }
    }
}


. . .

相关推荐

额外说明

springBoot+Vue+element-ui 制作简单的CRUD界面

springBoot+Vue制作简单的CRUD界面 本工程仅供学习参考用 效果图: 用户名:admin 密码:admin 资源下载: 百度网盘链接 提取码: w7g6

额外说明

Unity3D游戏开发——业务流程规划

QQ 1285575001 Wechat M010527 技术交流 QQ群599020441 纪年科技aming 简介 类似于Director,Blender game engine, Virtools 或 Torque Game Builder, 可利

额外说明

爬虫练手——求一个网页中所有数字之和!(题网:http://www.glidedsky.com/)

第一道:题目如下! 1.目标URL:http://www.glidedsky.com/,此网站中的第一题。 2.python中requests+etree+xpath实现:(cookie_str数据大家使用自己登陆后的cookies数据即可,安全起见,以

额外说明

Spark大数据处理讲课笔记4.5 Spark SQL数据源 - Hive表

文章目录 零、本讲学习目标 一、Spark SQL支持读写Hive 二、Spark配置hive-site.xml 三、准备工作 (一)启动Hive的metastore (二)启动Spark Shell 四、Spark读写Hive数据 (一)导入Spark

额外说明

Django讲课笔记02:Django环境搭建

文章目录 零、本讲学习目标 一、课程导入 (一)BSD、MVC、MVT (二)Django特点 二、新课讲授 (一)相关概念 1、Web框架 2、WSGI 3、两级结构 4、三级结构 5、反向代理的好处 (二)环境搭建 1、安装Python 2、安装Dj

额外说明

页面跳转与重定向(之二)

前言 这一篇是接着上一篇的继续 页面跳转与重定向(之一) 在上一篇中, 介绍了在html,js 和JSP中如何跳转和重定向。 基本是在页面层级进行页面的跳转, 进入一个页面后跳入另一个页面。 这一篇将从项目和服务端来看看有可能在实际的项目中使用到的状况。

额外说明

[plugin:vite:import-analysis] import.meta.glob() can only accept string literals.

必须是 string 类型,就是使用 ${} 不行 // 错误 const directives = import.meta.globEager(`./components/${compType}/**.vue`); // 正确 const direct

额外说明

【软考 系统架构设计师】系统安全分析与设计⑤ 安全防范体系的层次和信息安全体系结构

>>回到总目录<< 为了不辜负已经订阅了专栏的同学们的信任,所以本专栏不会有任何的优惠活动。 另外,当订阅人数每次达到 2 n ( n > 2 ) 2^n(n>2) 2

额外说明

iptables介绍和基本使用

iptables 防火墙是什么 防火墙好比一堵真的墙,能够隔绝些什么,保护些什么。 防火墙的本义是指古代构筑和使用木制结构房屋的时候,为防止火灾的发生和蔓延,人们将坚固的石块堆砌在房屋周围作为屏障,这种防护构筑物就被称之为“防火墙”。其实与防火墙一起起作

额外说明

【云原生】初识云原生

为什么要学习云原生 1. 当今的一个热点,热在哪里,大部分的企业都在上云,借助云的优势,运行自己的服务 2. 是现在和未来的一个趋势 3. 和微服务相关?微服务是云原生相关技术之一 学习云原生的哪些内容 1. docker 2. k8s 3. ....

ads via 小工具