Swift:从视图层次结构创建一个平面视图数组

时间:2018-03-09 20:51:08

标签: arrays swift dictionary uiview flatmap

我有一个视图层次结构,我需要将其展平为线性数组,比如说:

+ rootView 0 - subView 1 - subview 2 + subview 3 - subview 3.1 - subview 3.2 - subview 4

我需要一个数组:

[0, 1, 2, 3, 3.1, 3.2, 4]

我想知道是否可以使用mapflatMap,或者我是否必须使用传统方式,例如广度优先遍历?

谢谢!

1 个答案:

答案 0 :(得分:1)

我会使用递归函数,您可以在rootView上调用。

func flattenSubviews(view: UIView) -> [UIView] {

    var flatArray: [UIView] = []
    flatArray.append(view)

    for subview in view.subviews {
        flatArray += flattenSubviews(view: subview)
    }
    return flatArray
}

let flattenedViews = flattenSubviews(view: rootView)