Git Product home page Git Product logo

scrscrollmenucontroller's Introduction

CRScrollMenuController使用说明

1. 说明

CRScrollMenu是一个横向可滑动,菜单项底部有指示标志的菜单,CRScrollMenuController包含CRScrollMenu,并且是菜单项对应Content View Controller的容器,这些View Controller之间也是可以横向滑动的。

其特点有:

  1. 可以设置CRScrollMenu的背景图片
  2. 可以设置CRScrollMenu指示标志的高度跟颜色
  3. 支持插入与删除菜单项
  4. 菜单项支持subtitle,并且可以分别设置title跟subtitle在正常与选中状态的颜色与字体
  5. CRScrollMenuController作为容器包含了内容ViewController与CRScrollMenu,统一管理,方便使用
  6. CRScrollMenu可以在没有CRScrollMenuController的情况下使用

2. 结构

CRScrollMenu由以下模块组成:

  • CRScrollMenuItem:数据源,指定菜单项的title与subtitle
  • CRScrollMenuButton:菜单项,根据title与subtitle进行显示,基于UIControl,用selected属性判断菜单项是否被选中(是否选中使用不同的TextAttributes)
  • CRScrollMenu:滑动菜单,根据传入的CRScrollMenuItem数组生成对应的Button,并处理菜单项的点击与划动
  • CRScrollMenuController:ViewController的容器,管理Content View Controller(这些Controller的view全部包含在一个ScrollView中),并根据传入的CRScrollMenuItem初始化CRScrollMenu

3. 使用

版本要求:

  • iOS SDK 7 or later
  • Xcode 5 or later

安装

可以通过CocoaPods进行安装,在你的Podfile中加入pod 'CRScrollMenuController',然后pod update即可

如何使用

参见项目中CRViewController的viewDidLoad代码

使用的注意事项:

  • 对于CRScrollMenu,setButtonsByItems:在配置完CRScrollMenu之后使用,在setButtonsByItems:之后设置的属性不会生效。基于这个原因,CRScrollMenuController中的setViewControllers:withItems:也是一样
  • CRScrollMenu设置了背景图片之后,背景颜色将不会被显示出来
  • CRScrollMenu插入与删除菜单项的时候会自动更新内部ScrollView的contentOffset,当删除的菜单项为选中时,删除后第一项将变成选中项

4. TODO

  • 点击菜单项时,CRScrollMenu内部ScrollView的contentOffset的移动算法需要优化
  • 使用KVO,ContentView在滑动时,CRScrollMenu的指示标志应该随之动态滑动

5. 作者

尚传人(Joe Shang),邮箱为[email protected],CRScrollMenu基于MIT license,具体见LICENSE文件

scrscrollmenucontroller's People

Contributors

joeshang avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.