Sonar
简单雷达风格视图,用 Swift 编写,纯 CoreAnimation(无图片)。调整性高。
用法
只需将 UIView 放置在控制器中的某个位置,并使其为 SonarView 类。
SonarView 复制了 UITableView 的数据源和委托模式。
/// Data source
public weak var dataSource: SonarViewDataSource?
/// SonarViewDelegate and SonarViewLayout
public weak var delegate: SonarViewDelegate?
有三种必需的方法。
public protocol SonarViewDataSource: class {
func numberOfWaves(sonarView: SonarView) -> Int
func sonarView(sonarView: SonarView, numberOfItemForWaveIndex waveIndex: Int) -> Int
func sonarView(sonarView: SonarView, itemViewForWave waveIndex: Int, atIndex: Int) -> SonarItemView
}
SonarItemView
是一个 UIView 子类。为了在雷达中使用您自定义的视图,请让您的视图成为 SonarItemView 子类。视图的大小通过布局来确定。布局由 SonarViewLayout 协议定义。Sonar 提供了一个预定义的布局 - SonarViewCenteredLayout。波浪中的项从边缘到中心放置,例如,如果有 4 项在波浪中,第一个放在左侧,第二个放在右侧,第三个再次放在左侧但位于第一个的右侧,依此类推。我知道,图片会更好
如果您需要不同的行为,您当然可以创建自己的布局,通过采用 SonarViewLayout 并将其传递给 SonarView。有关更多信息,请参阅 SonarViewLayout。
最后一个协议是委托,用于处理每个波浪的选定项目和标题
public protocol SonarViewDelegate: class {
func sonarView(sonarView: SonarView, didSelectObjectInWave waveIndex: Int, atIndex: Int)
func sonarView(sonarView: SonarView, textForWaveAtIndex waveIndex: Int) -> String?
}
如果 distanceForWaveAtIndex
返回 nil,则标签将被隐藏。更多信息请参阅示例项目。
外观
有3种颜色可以进行调整。
class public var lineColor: UIColor
class public var lineShadowColor: UIColor
class public var distanceTextColor: UIColor
贡献
如果您需要公开其他属性或您有改进它的想法,请提交问题或发送拉取请求,我会很乐意讨论。
需求
iOS 8+,
版本 2.x - Swift 2.2+
版本 3.x - Swift 3.0+
版本 4.x - Swift 4.2+
版本 5.x - Swift 5.0+
安装
Sonar可以通过CocoaPods获取。为了安装它,只需将以下行添加到您的Podfile中
pod "Sonar"
作者
Aleš Kocur, [email protected]
许可协议
Sonar在MIT许可下可用。更多信息请参阅LICENSE文件。