PagingMenuController-Clickbalance 0.9.1

PagingMenuController-Clickbalance 0.9.1

测试已测试
Lang语言 SwiftSwift
许可证 MIT
发布上次发布2016年5月
SPM支持SPM

PagingMenuController-Clickbalance 维护。



  • kitasuke

这个库受到了 PageMenu 的启发

更新

请查看 更新日志 以获取详细信息

描述

具有灵活项宽的标准模式

分段控件模式

具有固定项宽的无限模式

自定义

  • 显示为第一个视图的默认页索引
defaultPage: Int
  • 用于分页视图的scrollEnabled。 在使用您的表格视图上的滑动删除时设置为false
scrollEnabled: Bool
  • 菜单视图的背景颜色
backgroundColor: UIColor
  • 选中菜单项的背景颜色
selectedBackgroundColor: UIColor
  • 菜单项的文本颜色
textColor: UIColor
  • 选中菜单项的文本颜色
selectedTextColor: UIColor
  • 菜单项文本的字体
font: UIFont
  • 选中菜单项文本的字体
selectedFont: UIFont
  • 菜单位置
menuPosition: MenuPosition

public enum MenuPosition {
    case Top
    case Bottom
}
  • 菜单视图的高度
menuHeight: CGFloat
  • 每个菜单项的间距
menuItemMargin: CGFloat
  • 在每个菜单项中显示的与右对齐的分割图像
menuItemDividerImage: UIImage?
  • 菜单项视图动画的持续时间
animationDuration: NSTimeInterval
  • 菜单视图的减速率
deceleratingRate: CGFloat
  • 菜单项位置
menuSelectedItemCenter: Bool
  • 菜单显示模式和滚动模式
menuDisplayMode: MenuDisplayMode

public enum MenuDisplayMode {
    case Standard(widthMode: MenuItemWidthMode, centerItem: Bool, scrollingMode: MenuScrollingMode)
    case SegmentedControl
    case Infinite(widthMode: MenuItemWidthMode, scrollingMode: MenuScrollingMode) // Requires three paging views at least
}

public enum MenuItemWidthMode {
    case Flexible
    case Fixed(width: CGFloat)
}

public enum MenuScrollingMode {
  case ScrollEnabled
  case ScrollEnabledAndBouces
  case PagingEnabled
}

如果 centerItem 为 true,则选中菜单项始终位于中心

如果 MenuScrollingModeScrollEnabledScrollEnabledAndBounces,则菜单视图允许滚动以选择任何菜单项;如果 MenuScrollingModePagingEnabled,则应逐个选择菜单项

  • 菜单项模式
public var menuItemMode = MenuItemMode.Underline(height: 3, color: UIColor.whiteColor(), horizontalPadding: 0, verticalPadding: 0)
public enum MenuItemMode {
    case None
    case Underline(height: CGFloat, color: UIColor, horizontalPadding: CGFloat, verticalPadding: CGFloat)
    case RoundRect(radius: CGFloat, horizontalPadding: CGFloat, verticalPadding: CGFloat, selectedColor: UIColor)
}
  • 懒加载数量页面
public var lazyLoadingPage: LazyLoadingPage = .Three
public enum LazyLoadingPage {
    case One // Currently sets false to scrollEnabled at this moment. Should be fixed in the future.
    case Three
}

用法

import PagingMenuController 以在文件中使用PagingMenuController。

使用Storyboard

let viewController = self.storyboard?.instantiateViewControllerWithIdentifier("ViewController") as! ViewController
viewController.title = "Menu title"
let viewControllers = [viewController]

let pagingMenuController = self.childViewControllers.first as! PagingMenuController

let options = PagingMenuOptions()
options.menuHeight = 60
options.menuDisplayMode = .Standard(widthMode: .Flexible, centerItem: true, scrollingMode: .PagingEnabled)
pagingMenuController.setup(viewControllers: viewControllers, options: options)
  • 您应该在视图控制器视图中添加 ContainerView,并将 PagingMenuController 设置为嵌入式视图控制器的类

请参阅演示项目中的 PagingMenuControllerDemo 目标以获取更多详细信息

仅编码

let viewController = UIViewController()
viewController.title = "Menu title"
let viewControllers = [viewController]

let options = PagingMenuOptions()
options.menuItemMargin = 5
options.menuDisplayMode = .SegmentedControl
let pagingMenuController = PagingMenuController(viewControllers: viewControllers, options: options)

self.addChildViewController(pagingMenuController)
self.view.addSubview(pagingMenuController.view)
pagingMenuController.didMoveToParentViewController(self)

有关更多信息,请参阅演示项目中的PagingMenuControllerDemo2目标

代理方法(可选)

pagingMenuController.delegate = self
func willMoveToPageMenuController(menuController: UIViewController, previousMenuController: UIViewController) {
}

func didMoveToPageMenuController(menuController: UIViewController, previousMenuController: UIViewController) {
}

程序化移动到菜单标签

// if you pass a nonexistent page number, it'll be ignored
pagingMenuController.moveToMenuPage(1, animated: true)

更改PagingMenuController的选项

再次调用带有新选项的setup方法。它会创建一个新的分页菜单控制器。别忘了清理子视图控制器中的属性。

要求

iOS8+
Swift 2.0+
Xcode 7.3+

请使用Swift 1.2的0.8.0标签

安装

手动

Pod/Classes目录中的所有文件复制到您的项目中。

许可

PagingMenuController可在MIT许可证下使用。有关更多信息,请参阅LICENSE文件。