Provides a vertical drawing of the tree structure and view information about the tree‘s nodes
Podfile 添加
pod 'VerticalTree'
#或者只需要核心功能
pod 'VerticalTree/Core'
#只需要PrettyText
pod 'VerticalTree/PrettyText'
——— VerticalTree
|——— Core 核心功能
| |——— VerticalTreeNodeProtocol
| |——— VerticalTreeNodeWrapper
|——— UI 绘制图形树(可折叠)
| |——— VerticalTreeCell
| |——— VerticalTreeIndexView
| |——— VerticalTreeListController
| |——— VerticalTreeListView
|——— PrettyText 终端文本树
| |——— VerticalTreePrettyPrint
public protocol BaseTree {
associatedtype T: BaseTree
var parent: T? {get}
var childs: [T] {get}
}
/// Node protocol
public protocol TreeNode: BaseTree {
associatedtype U: TreeNode where Self.U == Self
var parent: U? {get}
var childs: [U] {get}
/// note: deep start from 1
var currentDeep: Int {get}
/// note: minimum deep start from 1
var treeDeep: Int {get}
var index: Int {get}
/// indexViewLegnth
var length: TreeNodeLength {get}
/// info description
var info: Infomation {get}
var isFold: Bool {set get}
}
UIView
的层级就是树状结构
- 图形树绘制 (可折叠)
- 文本树生成
以UIView示范,让 UIView 遵守协议; 更多详见Demo(UIView,CALayer,UIViewController,自定义Node)
extension UIView: BaseTree {
public var parent: UIView? {
return superview
}
public var childs: [UIView] {
return subviews
}
}
然后 Wrapper 包装成 Node节点
// in ViewController
let rootNode = NodeWrapper(obj: view)
// 打印node结构
print(rootNode.currentTreePrettyPrintString())
使用 VerticalTree/PrettyText
的UIView扩展更简单
extension BaseTree where Self: NSObject, Self == Self.T {
// debug 可以查看更多信息
@discardableResult public func prettyPrint(_ inDebug: Bool = false) -> String {
return NodeWrapper(obj: self).currentTreePrettyPrintString().printIt()
}
public var getRoot: Self {
let chain = sequence(first: self) { $0.parent }
return chain.first { $0.parent == nil }!
}
}
- 打印当前View树结构
view.prettyPrint()
输入文本树如上:UIView示范
- 打印当前Windows树结构
view.getRoot.prettyPrint()
- 打印当前View树结构(查看更多debug信息)
XcodeYang, [email protected]
XYDebugView is available under the MIT license. See the LICENSE file for more info.