Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

CrabMen/CMPageTitleView

Open more actions menu

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

233 Commits
233 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

GitHub last commit (branch)

效果展示

效果展示 - 基本样式

基本样式 GIF
00-00.颜色效果 - RGB渐变
00-01.颜色效果 - 填充渐变
00-02.颜色效果 - 无渐变
00-03.切换样式 - 字体放大
00-04.切换样式 - 下划线
00-05.切换样式 - 遮罩
00-06.切换样式 - 字体放大 - 延迟
00-07.切换样式 - 下划线 - 延迟
00-08.切换样式 - 遮罩 - 延迟
00-09.附加效果 - 标题栏下方分割线
00-10.附加效果 - 标题文字之间分割线
00-11.对齐方式 -- 左对齐
00-12.对齐方式 -- 右对齐
00-13.对齐方式 -- 居中
00-14.对齐方式 -- SpaceAround
00-15.字体放大效果时对其方式 -- 居中对齐
00-16.字体放大效果时对其方式 -- 上对齐
00-17.字体放大效果时对其方式 -- 下对齐

效果展示 - 组合样式

根据上方的基本样式可以进行自由组合,从而达到你想要的效果;因组合样式过多,下方列出了部分

组合样式 GIF
01-00.字体放大 - 颜色RGB渐变
01-01.字体放大 - 颜色填充渐变
01-02.字体放大 - 颜色无渐变
01-03.字体放大(延迟) - 颜色RGB渐变
01-04.字体放大(延迟) - 颜色填充渐变
01-05.字体放大(延迟) - 颜色无渐变
01-06.下划线 - 颜色RGB渐变
01-07.下划线 - 颜色填充渐变
01-08.下划线 - 颜色无渐变
01-09.下划线(延迟) - 颜色RGB渐变
01-10.下划线(延迟) - 颜色填充渐变
01-11.下划线(延迟) - 颜色无渐变
01-12.下划线(固定宽度)- 颜色RGB渐变
01-13.下划线(固定宽度)- 颜色填充渐变
01-14.下划线(固定宽度)- 颜色无渐变
01-15.下划线(延迟 && 固定宽度)- 颜色RGB渐变
01-16.下划线(延迟 && 固定宽度)- 颜色填充渐变
01-17.下划线(延迟 && 固定宽度)- 颜色无渐变
01-18.下划线(比例宽度)- 颜色RGB渐变
01-19.下划线(比例宽度)- 颜色填充渐
01-20.下划线(比例宽度)- 颜色无渐变
01-21.下划线(延迟 && 比例宽度)- 颜色RGB渐变
01-22.下划线(延迟 && 比例宽度)- 颜色填充渐变
01-23.下划线(延迟 && 比例宽度)- 颜色无渐变
01-24.下划线(延展)- 颜色RGB渐变
01-25.下划线(延展)- 颜色填充渐变
01-26.下划线(延展)- 颜色无渐变
01-27.下划线(延展 && 固定宽度)- 颜色RGB渐变
01-28.下划线(延展 && 固定宽度)- 颜色填充渐变
01-29.下划线(延展 && 固定宽度)- 颜色无渐变
01-30.下划线(延展 && 比例宽度)- 颜色RGB渐变
01-31.下划线(延展 && 比例宽度)- 颜色填充渐变
01-32.下划线(延展 && 比例宽度)- 颜色无渐变
01-33.遮罩 - 颜色RGB渐变
01-34.遮罩 - 颜色填充渐变
01-35.遮罩 - 颜色无渐变
01-36.遮罩(延迟) - 颜色RGB渐变
01-37.遮罩(延迟) - 颜色填充渐变
01-38.遮罩(延迟) - 颜色无渐变
01-39.遮罩(固定宽度)- 颜色RGB渐变
01-40.遮罩(固定宽度)- 颜色填充渐变
01-41.遮罩(固定宽度)- 颜色无渐变
01-42.遮罩(延迟 && 固定宽度)- 颜色RGB渐变
01-43.遮罩(延迟 && 固定宽度)- 颜色填充渐变
01-44.遮罩(延迟 && 固定宽度)- 颜色无渐变
01-45.字体放大 && 下划线 - 颜色填充渐变
01-46.字体放大 && 下划线 && 延迟 - 颜色无渐变
01-47.字体放大 && 下划线(延展)- 颜色填充渐变
01-48.字体放大 && 下划线(延展 && 固定宽度 )- 颜色填充渐变
01-49.字体放大 && 下划线(延展 && 比例宽度 )-颜色填充渐变
01-50.字体放大 && 下划线(延展 && 放大时下对齐 )-颜色填充渐变
01-51.字体放大 && 下划线(延展 && 放大时下对齐 && 左对齐)-颜色填充渐变

效果展示 - 其他样式

其他样式 GIF
02-00.标题栏背景色
02-01.标题栏背景图片
02-02.rightView
02-03.全屏穿透样式

安装

CocoaPods安装:

  • For iOS8+:
use_frameworks!
target '<Your Target Name>' do
    pod 'CMPageTitleView'
end

手动安装:

CMPageTitleView/CMPageTitleView/Class 路径下的所有文件拖拽到你的项目中.

示例

首先, 先要导入.h头文件.

如果cocoaposd安装:

#import <CMPageTitleView/CMPageTitleView.h>

如果手动安装:

#import "CMPageTitleView.h"

创建CMPageTitleView 后,创建CMPageTitleConfig 对象并设置所需配置:

    CMPageTitleView *pageView = [[CMPageTitleView alloc] initWithFrame:frame];
    pageView.delegate = self;
    
    CMPageTitleConfig *config = [CMPageTitleConfig defaultConfig];
    config.cm_childControllers = self.childControllers; //必传参数
    pageView.cm_config = config;

    [self.view addSubview:pageView];

同样支持Masonry布局,代码如下:

    CMPageTitleView *pageView = [[CMPageTitleView alloc] init];
    [self.view addSubview:pageView];
    
    [pageView mas_makeConstraints:^(MASConstraintMaker *make) {
        make.left.right.mas_equalTo(0);
        make.top.mas_equalTo(CM_NAVI_BAR_H);
        make.height.mas_equalTo(CM_SCREEN_H - CM_NAVI_BAR_H);
        
    }];
    pageView.delegate = self;
    
    CMPageTitleConfig *config = [CMPageTitleConfig defaultConfig];
    config.cm_childControllers = self.childControllers;//必传参数
    
    pageView.cm_config = config;

按照上方代码,你已经创建了一个最简单的菜单栏🎉

支持的配置

配置 描述
cm_gradientStyle 颜色渐变样式
CMTitleColorGradientStyle_None( 颜色无渐变)
CMTitleColorGradientStyle_RGB(RGB颜色渐变)
CMTitleColorGradientStyle_Fill(填充色颜色渐变)
cm_switchMode 标题切换样式
CMPageTitleSwitchMode_Scale(字体放大)
CMPageTitleSwitchMode_Underline(下划线样式)
CMPageTitleSwitchMode_Cover (遮罩样式)
CMPageTitleSwitchMode_Delay(滑动切换时延迟,配合其他样式使用)
cm_additionalMode 标题栏附加样式
CMPageTitleAdditionalMode_Seperateline(标题栏下方的分割线)
CMPageTitleAdditionalMode_Splitter(标题文字之间的分割线)
cm_contentMode 对齐方式
CMPageTitleContentMode_Center(左右边距与标题间距一致)
CMPageTitleContentMode_SpaceAround(左右边距等于标题间距的一半)
CMPageTitleContentMode_Left(左对齐)
CMPageTitleContentMode_Right(右对齐)
cm_scaleGradientContentMode 垂直方向上的对齐方式
CMPageTitleScaleGradientContentMode_Center(居中)
CMPageTitleScaleGradientContentMode_Top(上对齐)
CMPageTitleScaleGradientContentMode_Bottom(下对齐)
注意:只有属性cm_switchMode包含CMPageTitleSwitchMode_Scale下才有效果
cm_childControllers 子视图控制器数组
cm_titles 标题数组
cm_font 标题正常字体
默认字体大小:[UIFont systemFontOfSize:15]
cm_selectedFont 标题选中字体
默认选中字体大小:cm_font的1.15倍
cm_backgroundColor 视图的背景色
默认颜色:[UIColor whiteColor]
cm_normalColor 标题正常颜色
默认颜色:[UIColor blackColor]
cm_selectedColor 标题选中颜色
默认颜色:[UIColor redColor]
cm_titleHeight 标题高度
默认高度:44
cm_titleTop 标题视图距离上方的偏移量
默认高度:0
cm_slideGestureEnable 是否支持侧滑
默认值:YES
cm_titleMargin 标题之间的间隔
cm_minTitleMargin 最小的标题间距
默认值为 20
cm_defaultIndex 默认选中的index
默认选择第0个
cm_seperaterLineColor 标题栏下方分割线的颜色
默认颜色:[UIColor grayColor]
cm_seperateLineHeight 标题分割线的高度
默认值:1px
cm_splitterColor 标题之间的分割线颜色
默认为:[UIColor lightGrayColor]
cm_splitterSize 标题之间的分割线size
默认宽度:1px
默认高度:标题栏高度的一半
cm_animationDruction 下划线和遮罩,在点击标题时,动画的时间间隔
默认值为:0.25
注意:取值范围 0.25~0.8(超出范围会使用默认值)
cm_rightView 垂直方向上的对齐方式
默认值:CMPageTitleVerticalContentMode_Center
注意:只有属性cm_switchMode包含CMPageTitleSwitchMode_Scale下有效果
cm_parentController 父视图控制器
cm_fullScreen (getter=cm_isFullScreen) 是否全屏显示
默认值:NO
cm_scale 标题的缩放等级 默认为 1.15
注意:不建议依赖该属性,后期可能会废弃,可以使用cm_selectedFont配合cm_font属性进行设置)
cm_titleWidths 标题宽度数组
注意:readonly
cm_minContentWidth 标题的总宽度 + 左右边距 + 所有的标题最小间距
注意:readonly
cm_titlesWidth 所有标题的总宽度
注意: readonnly
cm_underlineBorder 下划线视图是否圆角
默认值:NO
cm_underlineHeight 下划线高度
默认值:2
cm_underlineWidth 下划线宽度
默认情况下跟随文字宽度,但是设置该属性后下划线会固定使用该宽度
cm_underlineWidthScale 下划线跟随文字宽度 * cm_underlineWidthScale
注意:比例范围 0 ~ 1.3(超出 1.3 按 1.0 处理)
cm_underlineColor 下划线颜色
默认跟随标题的选中颜色
cm_underlineStretch 下划线是否延长
默认值:NO (具体效果可以看github效果展示)
cm_coverColor 遮罩颜色
cm_coverRadius 遮罩圆角半径
默认为 cover高度的一半
cm_coverWidth 遮罩固定宽度
注意:未做最大最小限制,请根据实际情况妥善设置
cm_coverVerticalMargin 遮罩垂直方向边距
注意:未做最大最小限制,请根据实际情况妥善设置
cm_coverHorizontalMargin 遮罩水平方向边距
注意:未做最大最小限制,请根据实际情况妥善设置

注意: 倘若需要复杂效果,可以通过创建CMPageTitleConfig对象中的 cm_gradientStyle(颜色渐变样式)、cm_switchMode(标题切换样式)、cm_additionalMode(附加效果)、cm_contentMode(对齐方式)、cm_scaleGradientContentMode(放大效果时的对齐样式)等基本样式的组合实现各种复杂效果,可以下载Demo查看具体效果,但是能实现的组合远远不止这些,更多组合可以集成到项目中尝试😊

版本

  • 2018-08-13 初始化项目
  • 2019-04-26 版本 0.3.0 新增 下划线比例宽度跟随标题文字宽度
  • 2019-05-03 版本 0.3.1
    • cm_scale可以继续使用,新增cm_selectedFont属性,便于设置选中字体大小;
    • 支持Masonry
  • 2019-05-09 版本 0.4.0
    • 新增设置标题分割线Size以及Color功能
    • 新增对外暴露的代理方法,便于用户做对应处理
    • 新增断言异常提示;新增设置是否允许侧滑功能
  • 2019-05-16 版本 0.4.1 修复cm_seperateLineHeight为0时无效的问题
  • 2019-05-17 版本 0.4.2 新增cm_animationDruction属性,便于用户设置动画时间
  • 2019-05-23 版本 0.5.0
    • 新增cm_verticalContentMode,可以设置标题文字垂直方向的对齐方式
    • 新增cm_additionalMode,便于设置分割线
    • 优化cm_backgroundColor效果;
    • 优化相关代码调用时机
  • 2019-07-13 版本 0.5.1 CMPageTitleView中新增-(void)cm_reloadConfig方法,便于用户刷新配置
  • 2019-07-13 版本 0.5.2
    • CMPageTitleView中新增-(void)cm_reloadConfig方法,便于用户刷新配置;
    • 修复0.5.1中的布局bug;修复部分情况下CMPageTitleContentView对象尺寸不准确问题
  • 2019-08-14 版本 0.6.0
    • 新增cm_rightView属性
    • 使用NSLayoutConstraint优化界面布局
    • 优化CMPageTitleConfig类的getter方法,大幅提高三方库性能
    • 解决与导航栏侧滑手势冲突的问题
    • 修复设置cm_defaultIndex为非0时,界面动画闪动问题
    • 新增示例
  • 2019-12-21 版本 0.6.1
    • 手动管理childController的生命周期
    • 优化rightView展示样式
    • 新增childController中跳转逻辑demo
  • 2019-05-10 版本 0.6.2
    • 紧急修复iOS10机型标题栏的NSLayoutConstraint偏移问题
  • 2020-06-07 版本 0.7.0
    • 新增全屏穿透样式
  • 2020-07-15 版本 0.7.1
    • 紧急修复iOS11 在滑动内容视图时,Cell向上偏移的问题
    • 适配MJRefresh
  • 2020-10-15 版本 0.7.2
    • 适配横竖屏切换
  • 2020-10-29 版本 0.7.3
    • 新增 cm_titleTop属性
  • 2020-12-17 版本 0.7.4 * 修复设置 cm_titleTop时,rightview偏移问题

注意

1. UIScrollView、UITableView、UICollectionView 在标题栏切换时,下沉问题UIScrollViewUITableViewUICollectionView视图所在的Controller中添加如下代码,(具体可以参考Demo中CMChildTableController.m的第95行)

  if (@available(iOS 11.0, *)) {
        self.tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever;
    } else {
        self.automaticallyAdjustsScrollViewInsets = NO;
    }

2. 0.7.0版本中新增的全屏穿透样式 全屏穿透样式在使用MJRefresh作为视图的下拉刷新时,透过标题栏是可以看到下拉刷新的布局的,请合理使用。 目前暂未想到良好的解决方案,如果你有好的方案,可以提PR

支持

  • 如果觉得该三方库还不错,可以★Star支持一下你的★Star就是我最大的动力
  • 如果发现bug或想有其他的新功能,可以 issue

许可

CMPageTitleView 基于MIT许可

About

✍️一分钟集成类似抖音,新浪微博,腾讯视频,网易新闻,今日头条等常见的标题栏样式,api灵活易扩展,支持Cocoapods和Masonry布局,支持ChildController的完整生命周期

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages

Morty Proxy This is a proxified and sanitized view of the page, visit original site.