使用 Swift 实现的可重排序网格视图方案。
它是 UIScrollView 的子类,不是一个集合视图布局。
自动根据项目宽度设置水平项目间距。因此项目必须是固定宽度的。
还自动设置其内容大小。
如果您在更改方向后调用 gridView?.invalidateLayout()
,它将根据新的方向布局网格。
将 ReorderableGridView.swift
复制并粘贴到您的项目中。
gridView = ReorderableGridView(frame: self.view.frame, itemWidth: 180, verticalPadding: 20)
self.view.addSubview(gridView!)
网格视图准备就绪!
现在您可以为它添加 ReorderableView
实例
let itemView = ReorderableView (x: 0, y: 0, w: 180, h: 250)
...
gridView?.addReorderableView(itemView)
// or
let pos = GridPosition (x: 0, y: 1)
gridView?addReorderableView (itemView, gridPosition: pos)
或移除它们
gridView?.removeReorderableViewAtGridPosition(GridPosition (x: 0, y: 0))
// or
gridView?.removeReorderableView (itemView)
设计提示
视图本身没有任何边距填充。
它使用整个框架宽度来计算一行中可以容纳多少个ReorderableView
,以及它们的水平填充量。
列之间的填充(垂直填充)可以在初始化方法中设置:
默认为 10。
您可以使用容器视图并使用类似以下内容:
CGRectInset (containerView.frame, marginX, marginY)
在具有边距初始化网格时使用
var reorderable : Bool = true
var draggable : Bool = true
var draggableDelegate: Draggable?
如果要设置网格是否可编辑
Draggable 协议
func didDragStartedForView (reorderableGridView: ReordableGridView, view: ReordableView)
func didDraggedView (reorderableGridView: ReordableGridView, view: ReordableView)
func didDragEndForView (reorderableGridView: ReordableGridView, view: ReordableView)
如果要访问网格中的拖放操作信息,请设置 gridView.draggableDelegate = self
并实现 Draggable
协议功能。
这可以用于多个网格布局。
示例包含在演示的第二个选项卡中。