顶部标签的实现

实现的效果如下

我们要完成的效果有以下特点:

1.背景图是一个半透明的背景

2.在被选中时文字颜色变为红色,文字下面也有一个红色的指示器

3.在刚进入这个页面时,默认选中第一个

虽然可以使用xib进行设计,但是太繁琐,不如直接用代码来的简单

    //自定义顶部背景图
    UIView *topVC = [[UIView alloc] init];
    topVC.y += 64;
    topVC.backgroundColor = [UIColor colorWithWhite:1.0 alpha:0.5];
    topVC.width = self.view.width;
    topVC.height = 50;
    [self.view addSubview:topVC];

topVC的y值加上导航器和状态栏的高度

先添加两个属性,用于后面的引用

@interface DDZEssenceViewController ()
/** 红色指示器 */
@property (nonatomic,assign) UIView *indicator;

/** 上一个选中的按钮 */
@property (nonatomic,assign) UIButton *lastBtn;
@end

将红色指示器添加到视图中

    //在按钮下方添加一条红色的view
    UIView *indicator = [[UIView alloc] init];
    indicator.height = 2;
    indicator.y = topVC.height - indicator.height;
    [indicator setBackgroundColor:[UIColor redColor]];
    [topVC addSubview:indicator];
    self.indicator = indicator;

对顶部标签上的内容进行详细设计

    NSArray *arrName = @[@"全部",@"视频",@"声音",@"图片",@"段子"];
    //添加按钮
    CGFloat height = topVC.height;
    CGFloat width = self.view.width/5;
    for (NSInteger i = 0; i < 5; i++) {
        UIButton *btn = [[UIButton alloc] init];
        btn.width = width;
        btn.height = height;
        btn.x += i * btn.width;
        [btn setTitleColor:[UIColor grayColor] forState:UIControlStateNormal];
        [btn setTitleColor:[UIColor redColor] forState:UIControlStateDisabled];
        btn.titleLabel.font = [UIFont systemFontOfSize:14];
        [btn setTitle:arrName[i] forState:UIControlStateNormal];
        [btn layoutIfNeeded];//立即布局

        //添加点击事件
        [btn addTarget:self action:@selector(btnClick:) forControlEvents:UIControlEventTouchUpInside];

        [topVC addSubview:btn];

        //默认选中第一个
        if (i == 0) {
            [self btnClick:btn];
        }
    }

切换按钮改变指示器的位置

//切换按钮事件
- (void)btnClick:(UIButton *)btn {
    //将上一个按钮取消激活
    self.lastBtn.enabled = YES;
    btn.enabled = NO;
    self.lastBtn = btn;

    [UIView animateWithDuration:0.25 animations:^{
        //获取红色指示器,更改指示器的位置
        self.indicator.width = btn.titleLabel.width;
        self.indicator.centerX = btn.centerX;
    }];

}
时间: 2024-08-27 22:48:44

顶部标签的实现的相关文章

iOS开发笔记13:顶部标签式导航栏及下拉分类菜单

当内容及分类较多时,往往采用顶部标签式导航栏,例如网易新闻客户端的顶部分类导航,最近刚好有这样的应用场景,参考网络上一些demo,实现了这种导航效果,记录一些要点. 效果图(由于视频转GIF掉帧,滑动和下拉动画显得比较生硬,刚发现quickTime可以直接录制手机视频,推荐一下,很方便) 1.顶部标签式导航栏 (1)实现思路 其实就是在上下两个UIScrollView上做文章,实现联动选择切换的效果. ①顶部标签导航栏topCategoryListScrollView加载显示分类数据,下方con

IOS UIScrollView + UIButton 实现页面和顶部标签页水平滚动效果

很长一段时间没有写博客了,最近在学习iOS开发,看了不少的代码,自己用UIScrollView和UIButton实现了水平滚动的效果,有点类似于今日头条的主界面框架,效果如下: 代码如下: MyScrollView.h #import <UIKit/UIKit.h> #import "MySegementView.h" @interface MyScrollView : UIView<UIScrollViewDelegate> - (instancetype)

Android之Actionbar顶部标签的使用

今天写了个示例代码,就是使用Actionbar类实现顶部标签切换功能.如果所示. 使用最新的adt工具,创建项目的时候都会带一个android-support-v7-appcompat的类库项目, 这个libproject中有我们要用的ActionBar,可以适配2.1的Android系统. 废话不多说,直接上代码. 1.修改activity_main.xml,增加ViewPager. <android.support.v4.view.ViewPager xmlns:android="ht

ActionBar+Fragment实现顶部标签页

用ActionBar的TABS模式,和Fragment实现程序顶部的标签页切换. 一. MainActivity public class MainActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 取得ActionB

[转]常用返回顶部代码

转至:http://jingyan.baidu.com/article/7082dc1ca6b928e40a89bd1a.html 一.使用HTML的锚标记最简单了 但是唯一的缺点就是样式不怎么样,会显示这个锚标记. <aname="top"id="top"></a> 放置位置在<body>标签之后随便找个地方放都可以,只要靠近顶部即可. 页面底部放置: <ahref="#top"target="

模仿UC新闻标签编辑功能

备注:博文只贴出关键代码,其中涉及到自定义控件.数据model可以忽略.博友使用过程中可以直接用button等替换掉报错的代码即可. ************************************ h 文件  ************************************ #import <UIKit/UIKit.h> #import "DragButton.h" /** *  非编辑状态,点击顶部标签回调到上一页数据 * *  @param model

页面回到顶部的三种实现(锚标记,js)

本文不再介绍,大家根据自己需要选择其中的一种即可,总之简约最美的,能减少代码就减少代码,能不调用的就别调用,要不是天缘博客的文章都是牛长也不会添加这个功能. 本文介绍三款简单的返回页面顶部代码,可以使用简单的HTML(http://www.jb51.net/web/62651.html) 锚标记,也可使用Javascript Scroll (http://www.jb51.net/article/31422.htm) 函数动态返回,其它的还有悬浮脚本等有点复杂了,本文不再介绍,大家根据自己需要选

几种常用网页返回顶部代码

一.使用HTML的锚标记最简单了 但是唯一的缺点就是样式不怎么样,会显示这个锚标记. <aname="top"id="top"></a> 放置位置在<body>标签之后随便找个地方放都可以,只要靠近顶部即可. 页面底部放置: <ahref="#top"target="_self">返回顶部</a> 二.使用Javascript Scroll函数返回顶部 scrooll

Struts2标签库(转)

Struts2 标签库详解 Struts2标签库 包括: OGNL Struts2标签分类 控制标签 :(if, elseif,else, iterator, append, merge, generator, subset, sort) 数据标签 :(bean, param,date, debug, include, set, url, push) OGNL Object-Graph Navigation Language的缩写,它是一种功能强大的表达式语言(ExpressionLanguag