gpt4 book ai didi

arrays - Swift:从 View 层次结构创建平面 View 数组

转载 作者:行者123 更新时间:2023-11-28 14:57:22 24 4
gpt4 key购买 nike

我有一个 View 层次结构,我需要将它展平成一个线性数组,比如:


+ Root View 0
- subview 1
- subview 2
+ subview 3
- subview 3.1
- subview 3.2
- subview 4

我需要一个数组:

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

我在想是不是可以用map或者flatMap,还是非得用像广度优先遍历这样的传统方式?

谢谢!

最佳答案

我会使用递归函数,您可以在 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)

通过将其放在扩展中来编写上述内容的一种稍微更抽象的方式:

extension UIView {

func subviewsFlattened() -> [UIView] {

var output: [UIView] = []
output.append(self)

for subview in self.subviews {
output += subview.subviewsFlattened()
}

return output
}

}

然后你可以在任何 View 上调用它:

let allViews = someView.subviewsFlattened()

关于arrays - Swift:从 View 层次结构创建平面 View 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49201959/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com