测试已测试 | ✗ |
语言编程语言 | SwiftSwift |
许可证 | MIT |
发布上次发布 | 2016年9月 |
SPM支持 SPM | ✗ |
Maintained by Kohei Iwasaki.
RGNPageMenu 是一个易于定制的分页菜单控制器。
以下来自 示例 项目。
import UIKit
class ViewController: UIViewController {
var titles = ["Python", "C++", "Ruby", "Swift", "Go", "Elixir"]
var viewControllers:[String:UIViewController] = [:]
var pageMenu: RGNPageMenu!
override func viewDidLoad() {
super.viewDidLoad()
let options:[RGNPageMenuOption] = [
.initialPageIndex(1),
.menuHeight(80.0),
.menuItemMargin(20.0),
.menuItemPadding(20.0)
]
self.pageMenu = RGNPageMenu(frame: self.view.frame, delegate: self, options: options)
self.view.addSubview(self.pageMenu.view)
self.pageMenu.menuScrollView.backgroundColor = UIColor(red: 250.0/255, green: 250.0/255, blue: 250.0/255, alpha: 1.0)
}
}
// MARK: - RGNPageMenuDelegate
extension ViewController: RGNPageMenuDelegate {
// Number of controllers
func rgnNumberOfControllers() -> Int {
return titles.count
}
// Controller at index
func rgnController(atIndex index: Int) -> UIViewController {
let t = titles[index]
if let vc = self.viewControllers[t] {
return vc
} else {
let vc = MyTableViewController()
vc.title = t
self.viewControllers[t] = vc
return vc
}
}
// Number of menu items
func rgnNumberOfMenuItems() -> Int {
return titles.count + 1
}
// Menu label at index
func rgnMenuLabel(atIndex index: Int) -> UILabel {
let label = UILabel()
if index == titles.count {
label.text = "Add Language"
} else {
label.text = titles[index]
}
label.font = UIFont.systemFont(ofSize: 13.0)
if index == self.pageMenu.currentPageIndex {
label.textColor = UIColor.white
label.backgroundColor = UIColor(red: 236.0/255, green: 109.0/255, blue: 109.0/255, alpha: 1.0)
label.layer.cornerRadius = 10.0
label.layer.masksToBounds = true
} else {
label.textColor = UIColor(red: 116.0/255, green: 116.0/255, blue: 116.0/255, alpha: 1.0)
}
label.textAlignment = NSTextAlignment.center
label.sizeToFit()
if label.frame.size.width < 44 {
label.frame.size.width = 44
}
label.frame.size.height += 8.0
return label
}
// Tap handler for menu items (optional)
func rgnMenuItemTapped(atIndex index: Int) {
if index == titles.count {
self.titles.append("New Language\(index)")
self.pageMenu.reloadData(resetPosition: true)
} else {
self.pageMenu.moveToPage(index)
}
}
// Page changed (optional)
func rgnDidMoveTo(pageIndex index: Int) {
let vc = self.rgnController(atIndex: index) as! MyTableViewController
vc.viewDidPresent()
}
}
请提交问题或提交拉取请求,以便看到您想看到的任何内容!我们正在等待! :)
RGNPageMenu 采用 MIT 许可证发布。