Hexacon 是在您的应用程序中显示内容的一种新方法,如 Apple Watch 春季板
深受 lmmenge
的工作的影响。特别感谢 zenly
给我实现这一功能的机会
您还可以使用仓库中提供的示例,或者使用 pod try Hexacon
就像UITableView一样!
将其作为子视图添加
override func viewDidLoad() {
super.viewDidLoad()
let hexagonalView = HexagonalView(frame: self.view.bounds)
hexagonalView.hexagonalDataSource = self
view.addSubview(hexagonalView)
}
然后使用数据源协议
extension ViewController: HexagonalViewDataSource {
func numberOfItemInHexagonalView(hexagonalView: HexagonalView) -> Int {
return data.count - 1
}
func hexagonalView(hexagonalView: HexagonalView, imageForIndex index: Int) -> UIImage? {
return data[index]
}
}
HexagonalView 有以下属性
weak var hexagonalDataSource: HexagonalViewDataSource?
支持 HexagonalViewDataSource 协议的对象,可以提供视图或图像来配置 HexagonalView。
weak var hexagonalDelegate: HexagonalViewDelegate?
支持 HexagonalViewDelegate 协议的对象,可以响应用户 HexagonalView 的事件。
public var lastFocusedViewIndex: Int
HexagonalView 位于或曾经居中的应用视图索引。
public var itemAppearance: HexagonalItemViewAppearance
外观用于配置布局的全局外观和 HexagonalItemView
public struct HexagonalItemViewAppearance {
public var needToConfigureItem: Bool // used to circle image and add border, default is false
public var itemSize: CGFloat
public var itemSpacing: CGFloat
public var itemBorderWidth: CGFloat
public var itemBorderColor: UIColor
//animation
public var animationType: HexagonalAnimationType
public var animationDuration: NSTimeInterval
}
默认的外观是
itemAppearance = HexagonalItemViewAppearance(
needToConfigureItem: false,
itemSize: 50,
itemSpacing: 10,
itemBorderWidth: 5,
itemBorderColor: UIColor.grayColor(),
animationType: .Circle,
animationDuration: 0.2)
有三种类型的动画可用(更多即将到来)
public enum HexagonalAnimationType { case Spiral, Circle, None }
func reloadData()
这个函数会从数据源加载或重新加载所有视图并刷新显示
func viewForIndex(index: Int) -> HexagonalItemView?
如果存在则在给定的索引返回视图
hexacon 有两个协议,HexagonalViewDataSource 和 HexagonalViewDelegate
func numberOfItemInHexagonalView(hexagonalView: HexagonalView) -> Int
返回视图将包含的项目数
func hexagonalView(hexagonalView: HexagonalView,imageForIndex index: Int) -> UIImage?
在索引处返回要显示的图像
func hexagonalView(hexagonalView: HexagonalView,viewForIndex index: Int) -> UIView?
在索引处返回要显示的视图,视图将在显示之前转换为图像
注意:所有这些方法都是可选的,您必须选择是否显示视图或图像,否则将按照优先级选择图像
func hexagonalView(hexagonalView: HexagonalView, didSelectItemAtIndex index: Int)
当用户选择一个视图时调用该方法
func hexagonalView(hexagonalView: HexagonalView, willCenterOnIndex index: Int)
当 HexagonalView 将会聚焦于项目时调用此方法,它提供了最后一个聚焦视图索引的新值
版权 © 2015 Gautier Gédoux
在此特此无偿授予任何获得此软件和相关的文档文件(以下简称“软件”)副本的任何人以自由处理软件的权利,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或销售软件副本,并允许获得软件的人这样做,但受以下条件约束:
上述版权声明和本许可宣告应包含在软件的所有副本或大部分副本中。
软件按“现状”提供,不提供任何形式的保证,无论是明示的、默示的还是法律上的,包括但不限于适销性、特定用途的适用性和非侵权性。在任何情况下,作者或版权持有人不对任何索赔、损害或其他责任承担任何责任,无论此种责任源于合同行为、侵权或其他行为,并无论此类责任源于或与软件或在软件中使用或调试有关。