gpt4 book ai didi

ios - 如何在我的触摸位置获取层次结构中的所有 View - Swift

转载 作者:IT王子 更新时间:2023-10-29 05:53:11 26 4
gpt4 key购买 nike

如何在我的触摸位置获取所有 UIView?

在下图中,我需要让所有 UIView 与黄线接触。

来自 UI 层次结构的片段:

enter image description here

我正在寻找与 SpriteKit 类似的功能,我们用它来获取所有节点

self.nodes(at: touch.location(in: self))

最佳答案

您必须像这样遍历层次结构中的所有 View :

extension UIView {
func allViews(for touch: UITouch) -> [UIView] {
return self.allViews(at: touch.location(in: self))
}

func allViews(at point: CGPoint) -> [UIView] {
var stack = [UIView]()
var result = [UIView]()

stack.append(self)
while let view = stack.popLast() {
let localPoint = view.convert(point, from: self)

if view.bounds.contains(localPoint) {
result.append(view)
}
stack.append(contentsOf: view.subviews)
}
return result
}
}

您可以从包含所有适当 View (例如 View Controller 的 View )或窗口的任何 super View 开始。第二种方法的点必须相对于由 self 表示的 View 的边界。

关于ios - 如何在我的触摸位置获取层次结构中的所有 View - Swift,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49112063/

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