All Projects → SPStore → Sppagemenu

SPStore / Sppagemenu

分页菜单,功能非常齐全,满足绝大多数APP,简书地址:

Projects that are alternatives of or similar to Sppagemenu

Hvscrollview
这不是框架,只是3个示例程序,给大家提供一个实现这种布局的思路
Stars: ✭ 584 (+45.27%)
Mutual labels:  menu, scrollview, page, segment
Wmzpagecontroller
分页控制器,替换UIPageController方案,具备完整的生命周期,多种指示器样式,多种标题样式,可悬浮,支持ios13暗黑模式(仿优酷,爱奇艺,今日头条,简书,京东等多种标题菜单) (Pagination controller with full life cycle, multiple indicator styles, multiple title styles)
Stars: ✭ 405 (+0.75%)
Mutual labels:  menu, page, segment
Jxcategoryview
A powerful and easy to use category view (segmentedcontrol, segmentview, pagingview, pagerview, pagecontrol) (腾讯新闻、今日头条、QQ音乐、网易云音乐、京东、爱奇艺、腾讯视频、淘宝、天猫、简书、微博等所有主流APP分类切换滚动视图)
Stars: ✭ 5,561 (+1283.33%)
Mutual labels:  scrollview, page, segment
Jxpagelistview
高仿闲鱼、转转、京东、中央天气预报等主流APP列表底部分页滚动视图
Stars: ✭ 377 (-6.22%)
Mutual labels:  scrollview, page, segment
Jxsegmentedview
A powerful and easy to use segmented view (segmentedcontrol, pagingview, pagerview, pagecontrol, categoryview) (腾讯新闻、今日头条、QQ音乐、网易云音乐、京东、爱奇艺、腾讯视频、淘宝、天猫、简书、微博等所有主流APP分类切换滚动视图)
Stars: ✭ 1,905 (+373.88%)
Mutual labels:  scrollview, page, segment
Aquaman
A pure-Swift library for nested display of horizontal and vertical scrolling views
Stars: ✭ 228 (-43.28%)
Mutual labels:  scrollview, page
Material Bottom Nav
A bottom navigation bar adhering to the Material Design specification.
Stars: ✭ 41 (-89.8%)
Mutual labels:  menu, bar
Chinese Lunar Calendar For Mac
Chinese Lunar Calendar for Mac
Stars: ✭ 150 (-62.69%)
Mutual labels:  menu, bar
Create Wxapp Page
创建微信小程序页面的命令行工具
Stars: ✭ 37 (-90.8%)
Mutual labels:  component, page
Mxscroll
Easier with scroll
Stars: ✭ 159 (-60.45%)
Mutual labels:  scrollview, segment
React Site Nav
A kick ass site menu powered by styled components inspired by Stripe.
Stars: ✭ 155 (-61.44%)
Mutual labels:  menu, bar
React Native X Bar
🎩 A flexible, lightweight bar component for common UI patterns in React Native
Stars: ✭ 68 (-83.08%)
Mutual labels:  component, bar
React Native Modalize
A highly customizable modal/bottom sheet that loves scrolling content.
Stars: ✭ 2,119 (+427.11%)
Mutual labels:  component, scrollview
Jxpagingview
类似微博主页、简书主页等效果。多页面嵌套,既可以上下滑动,也可以左右滑动切换页面。支持HeaderView悬浮、支持下拉刷新、上拉加载更多。
Stars: ✭ 2,309 (+474.38%)
Mutual labels:  scrollview, page
Vuecirclemenu
🐰A beautiful circle menu powered by Vue.js
Stars: ✭ 1,199 (+198.26%)
Mutual labels:  component, menu
Vue Infinite Slide Bar
∞ Infinite slide bar component (no dependency and light weight 1.48 KB)
Stars: ✭ 190 (-52.74%)
Mutual labels:  component, bar
Spotmenu
Stars: ✭ 2,668 (+563.68%)
Mutual labels:  menu, bar
Shazam
A pure-Swift library for nested display of horizontal and vertical scrolling views
Stars: ✭ 69 (-82.84%)
Mutual labels:  scrollview, page
Transformerslayout
🔥 App金刚区导航菜单,类似淘宝、QQ音乐等APP导航,方格布局横向多行滑动翻页带滚动条
Stars: ✭ 258 (-35.82%)
Mutual labels:  menu, page
Mao Rn Android Kit
⚙️ Android Native (ui components and modules) wrap in React Native
Stars: ✭ 74 (-81.59%)
Mutual labels:  component, scrollview

SPPageMenu

Build Status Pod Version Pod Platform Language Pod License Carthage compatible codecov

目录

如何安装

版本3.5.0

target 'MyApp' do
  pod 'SPPageMenu', '~> 3.5.0'
end

说明:3.5.0版本在3.4.5版本的基础上改动如下:
1、新增7个API
* - (void)setContent:(id)content forItemAtIndex:(NSUInteger)itemIndex;
* - (void)setCustomSpacing:(CGFloat)spacing afterItemAtIndex:(NSUInteger)itemIndex;
* - (CGFloat)customSpacingAfterItemAtIndex:(NSUInteger)itemIndex;
* - (CGRect)titleRectRelativeToPageMenuForItemAtIndex:(NSUInteger)itemIndex; 
* - (CGRect)imageRectRelativeToPageMenuForItemAtIndex:(NSUInteger)itemIndex; 
* - (CGRect)buttonRectRelativeToPageMenuForItemAtIndex:(NSUInteger)itemIndex; 
* - (void)addComponentViewInScrollView:(UIView *)componentView; 
2、在不可滑动自适应内容的排列方式下,设置间距依然生效
3、修复设置指定item宽度和内间距失效问题
4、修复多次对bridgeScrollView赋值上一个KVO观察者未移除问题

版本3.4.5

target 'MyApp' do
  pod 'SPPageMenu', '~> 3.4.5'
end

说明:3.4.5版本在3.4.4版本的基础上修复了先设置unSelectedItemTitleFont,再设置items文字显示不全问题

版本3.4.4

target 'MyApp' do
  pod 'SPPageMenu', '~> 3.4.4'
end

说明:3.4.4版本在3.4.2版本的基础上改动如下:
1、重构了内部自定义按钮
2、解决了标题颜色的alpha值小于1时颜色渐变不准确问题
3、新增SPPageMenuButtonItem模型,用于同时设置文字和图片

版本3.4.2

target 'MyApp' do
  pod 'SPPageMenu', '~> 3.4.2'
end

说明:3.4.2版本在3.4.1版本的基础上,trackStyle属性支持storyBoard/xib,方便在storyBoard/xib中创建时可以直接设置

版本3.4.1

target 'MyApp' do
  pod 'SPPageMenu', '~> 3.4.1'
end

3.4.1版本在3.4.0版本的基础上修复了多次调用setItems:selectedItemIndex:方法引发的问题

版本3.4.0

target 'MyApp' do
  pod 'SPPageMenu', '~> 3.4.0'
end

说明:3.4.0版本在3.0版本的基础上主要改动如下:
1、增加trackerFollowingMode属性,跟踪器跟踪模式
2、增加selectedItemTitleFont和unSelectedItemTitleFont属性,设置选中item的标题字体和非选中item的标题字体
3、增加设置和获取背景图片的方法
4、修复跟踪器缩放文字显示不全问题
5、优化代码

版本3.0

target 'MyApp' do
  pod 'SPPageMenu', '~> 3.0'
end

说明:3.0版本在2.5.5版本的基础上主要改动如下:
1、新增numberOfItems属性,意思是items的个数
2、新增bounces属性,滑动scrollView时的边界反弹效果
3、新增alwaysBounceHorizontal属性,水平方向上,当内容没有充满scrollView时,滑动scrollView是否有反弹效果
4、新增设置或获取指定按钮的四周内边距的方法
5、分割线适配屏幕分辨率,并修改了默认颜色
6、内部scrollView的scrollsToTop属性置为NO,不妨碍外界scrollView的置顶功能
7、右侧功能按钮的单边阴影效果采用shadowPath
8、细化内部的自定义按钮,比如可以设置文字与图片之间的间距
9、修复设置指定item的文字较长时的显示不全的问题
10、修复插入和删除操作引发的bug
11、修复长按按钮然后滑动scrollView无法滑动问题

版本2.5.5

target 'MyApp' do
  pod 'SPPageMenu', '~> 2.5.5'
end

说明:2.5.5版本在2.5.3版本的基础上主要改动如下:
1、增加可以设置跟踪器宽度的属性,增加可以设置跟踪器高度和圆角半径的方法
2、修复了当未选中按钮颜色的alpha值小于1时,颜色渐变不准确问题
3、废弃了文字缩放(SPPageMenuTrackerStyleTextZoom)的枚举,该枚举由属性selectedItemZoomScale
   代替,增加了SPPageMenuTrackerStyleNothing枚举
4、可以设置分割线高度
版本2.5.3
target 'MyApp' do
  pod 'SPPageMenu', '~> 2.5.3'
end

部分功能演示图

(友情提示:如果您的网络较慢,gif图可能会延迟加载,您可以先把宝贵的时间浏览其它信息)

image

重难点讲解

// 该属性是选中的按钮下标,大家可以通过这个属性判断选择了第几个按钮,如果改变其值,可以用于切换选中的按钮

@property (nonatomic) NSInteger selectedItemIndex; 
// 这个scrollView是外界传进来的scrollView,通常的案例都是在pageMenu的下方有若干个子控制器在切换,子控制器的切换由滑动
scrollView实现,使用者只需要把该scrollView传给bridgeScrollView,SPPageMenu框架内部会监听该scrollView的横向滚动,实
现了让跟踪器时刻跟随该scrollView滚动的效果。暂时不支持监听垂直方向的滚动,如果你的scrollVeiw要垂直滚动实现切换按钮,你
不妨可以尝试自己在-scrollViewDidScroll:代理方法中设置selectedItemIndex的值

@property (nonatomic, strong) UIScrollView *bridgeScrollView;
// 排列方式:支持3种排列方式;1、可滑动,按钮宽度根据内容自适应;2、不可滑动,按钮等宽;3、不可滑动,按钮宽度根据内容自
适应。3种排列方式都有非常高的使用频率。第1种排列方式:SPPageMene的容量会根据按钮个数而定;第2种和第3种排列方式:SPPageMenu
的容量固定为SPPageMenu的宽度

@property (nonatomic, assign) SPPageMenuPermutationWay permutationWay; 
// 跟踪器跟踪模式;这个属性从3.4版本开始闪亮登场。该属性是个枚举,共3个:1、SPPageMenuTrackerFollowingModeAlways,这个
枚举值的意思是让跟踪器时刻跟随外界scrollView(即bridgeScrollView)横向移动; 2、SPPageMenuTrackerFollowingModeEnd,这个
枚举的意思是当外界scrollView滑动结束时,跟踪器才开始移动;相当于3.4版本之前的closeTrackerFollowingMode属性 3、
SPPageMenuTrackerFollowingModeHalf,这个枚举的意思是当外界scrollView拖动距离超过屏幕一半时,跟踪器开始移动。

@property (nonatomic, assign) SPPageMenuTrackerFollowingMode trackerFollowingMode;
// 内容的四周内边距(内容不包括分割线),默认UIEdgeInsetsZero;这个属性是个惊喜,往往能做到一些你意想不到的事情。假如你的
SPPageMenu控件高度固定不变,想要设置跟踪器与按钮之间的垂直间距变小,就可以设置该属性的top和bottom值,让SPPageMenu的
内容在垂直方向上内缩

@property (nonatomic, assign) UIEdgeInsets contentInset; 
// 该方法的效果和属性bridgeScrollView功能一致,如果外界想通过该方法实现跟踪器时刻跟随scrollView移动,可以在代理方法
-scrollViewDidScroll:中调用该方法,如果方法和属性同时实现,属性优先级更高

- (void)moveTrackerFollowScrollView:(UIScrollView *)scrollView;
// 代理方法:若以下2个代理方法同时实现了,只会走第2个代理方法(第2个代理方法包含了第1个代理方法的功能)
// 代理方法何时触发?代理方法有2种方式会触发,第一种是点击了SPPageMenu的按钮,这种方式无论点击的按钮是否同一个都会触发;
第二种是由滑动外界scrollView而触发,当跟踪模式为SPPageMenuTrackerFollowingModeAlways和SPPageMenuTrackerFollowingModeEnd
时,滑动scrollView结束的时候触发地代理方法,当跟踪器的跟踪模式为SPPageMenuTrackerFollowingModeHalf时,滑动scrollView
超过一半时就会触发代理方法

- (void)pageMenu:(SPPageMenu *)pageMenu itemSelectedAtIndex:(NSInteger)index;
- (void)pageMenu:(SPPageMenu *)pageMenu itemSelectedFromIndex:(NSInteger)fromIndex toIndex:(NSInteger)toIndex;

想了解更多使用细节,大家可以把demo下载到本地,里面有非常多的示例以及详细的注释

使用者提问

  • :当我设置排列方式为按钮等宽(即SPPageMenuPermutationWayNotScrollEqualWidths),为什么按钮文字显示不全?
    :这是因为你的按钮个数较多或者文字较长,你可以通过设置itemPadding属性来调整按钮之间的间距,间距调小,每个按钮的宽度就会增大, 如果itemPadding设置为0仍然显示不全,那就请选择其它排列方式。

  • :如何不通过点击按钮或者滑动外界scrollView来实现选中按钮的切换 ?
    :你可以改变selectedItemIndex的值切换选中按钮

  • :如何在不改变pageMenu高度的情况下,让跟踪器和按钮之间的垂直间距变小 ?
    :你可以通过设置contentInset的top和bottom值,让pageMenu的内容在垂直方向上往中间挤压

  • :如何给按钮设置角标 ?
    :本框架并未单独提供设置角标的方法,因为设置角标是一个比较大的工程,如果提供角标,又得给角标提供各种属性设置,这将会把本框架搞的非常臃肿,这也 不是本框架的重点内容,但是也不是不可以设置,你可以通过KVC获取按钮的数组buttons,然后通过该数组获取指定按钮,拿到该按钮就可以设置角标,具体 事例demo中有示范

回到顶部

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].