MYTableViewIndex 0.8.0

MYTableViewIndex 0.8.0

测试已测试
语言语言 SwiftSwift
许可证 MIT
发布最新版本2019年6月
SPM支持 SPM

Makarov Yury维护。



MYTableViewIndex

Build Status Version License Platform

MYTableViewIndex 是对UITableView部分索引的重写。这个控件通常出现在显示联系人的应用、歌曲、以及其他按字母顺序排序的数据应用中。MYTableViewIndex 完美复制了原生 iOS 部分索引,但也支持显示图片以及额外的可定制功能。

特性

  • 可以显示图片
  • 完全可定制:使用自定义字体、背景视图,添加您自己的项目类型
  • 与任何 UIScrollView 子类兼容
  • 与 UITableViewController 和 UICollectionViewController 正确工作
  • 自动布局、管理内间距和避免键盘冲突(通过 TableViewIndexController)
  • 支持从右向左的语言
  • 支持触觉反馈
  • 支持无障碍访问

以下是一些特性的截图

Screenshot0 Screenshot1
Screenshot2 Screenshot3
Screenshot4 Screenshot5

使用

1. 实例化

手动设置

该组件是UIControl子类,可作为任何其他视图使用,只需将其添加到视图层次结构即可。这可以通过Interface Builder或代码完成

let tableViewIndex = tableViewIndex(frame: CGRect())
view.addSubview(tableViewIndex)

请注意,在这种情况下,不自动执行布局,所有所需索引视图对齐完全由您决定。

使用TableViewIndexController

当处理UITableViewController/UICollectionViewController时,事情变得更加复杂。这些视图控制器的根视图是UIScrollView的后代,将其用作TableViewIndex的父视图通常是一个糟糕的主意,因为UIScrollView默认会延迟触摸交付。

引入TableViewIndexController。当使用它时,它会创建一个TableViewIndex实例,将其添加到层次结构中作为根视图的兄弟视图,并设置布局。控制器还观察UIScrollView的间距并相应地更新索引视图的大小。例如,当键盘显示时,这很有意义。

您还可以使用控制器来隐藏TableViewIndex以显示某些表格部分,例如Apple曾在其音乐应用中做过

Screenshot4

使用TableViewIndexController,设置可以在一行代码中完成

let tableViewIndexController = TableViewIndexController(scrollView: tableView)

2. 数据源

要为索引视图提供数据,只需简单地实现TableViewIndexDataSource协议的以下方法即可

func indexItems(for tableViewIndex: TableViewIndex) -> [UIView] {
    return UILocalizedIndexedCollation.currentCollation().sectionIndexTitles.map{ title -> UIView in
        return StringItem(text: title)
    }
}

然后将它附加到索引视图上

tableViewIndexController.tableViewIndex.dataSource = dataSourceObject

有几种预定义的项目类型可用于显示字符串、图像、放大镜和截断符号。尽管如此,您仍然可以提供自己的项目类型。

3. 代理

为了响应用户在索引视图上的触摸操作并将表格滚动到所选部分,需要提供一个代理对象并实现以下方法

func tableViewIndex(_ tableViewIndex: TableViewIndex, didSelect item: UIView, at index: Int) -> Bool {
    let indexPath = NSIndexPath(forRow: 0, inSection: sectionIndex)
    tableView.scrollToRowAtIndexPath(indexPath, atScrollPosition: .Top, animated: false)
    
    return true // return true to produce haptic feedback on capable devices 
}

4. 定制化

MYTableViewIndex 完全可定制。查看 TableViewIndex 属性以获取更多详细信息。

示例

要运行示例项目,请克隆存储库,然后首先从 Example 目录运行 pod install

要求

  • iOS 8.0+
  • Swift 5.0

安装

CocoaPods

MYTableViewIndex 通过 CocoaPods 提供。要安装,只需将下面的行添加到 Podfile 文件中。

pod 'MYTableViewIndex'

手动安装

下载并将 MYTableViewIndex 文件夹中的所有 .swift 文件拖放到项目中。

Objective-C

MYTableViewIndex中所有公共类都暴露给Objective-C,只需导入库模块即可。

@import MYTableViewIndex;

别忘了在Podfile中启用框架

use_frameworks!

作者

Makarov Yuriy,[email protected]

许可证

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