gpt4 book ai didi

ios - 识别 subview 的类

转载 作者:行者123 更新时间:2023-11-28 06:51:49 24 4
gpt4 key购买 nike

我决定手动为我的对象设置动画,因此对 UIView 类进行了扩展:

public extension UIView{

func slideOut(){
UIView.animateWithDuration(0.5, animations: { self.frame.origin.x = -self.frame.width }, completion: finishedDisposing)
}

func finishedDisposing(successfully: Bool){
if !successfully{
((UIApplication.sharedApplication().delegate as! AppDelegate).window!.rootViewController as! VC).showSystemMessage("Failed to dispose one or more subviews from superview", ofType: .NOTICE)
}

responder.viewDisposed()
}

}

效果很好,我对此没有任何问题,但我在 VC 中有一个方法(自定义 UIViewController)viewDisposed() 每当 View 滑出时都会调用该方法视线,它有这样的实现:

func viewDisposed() {
disposed++
print("Updated disposed: \(disposed) / \(self.view.subviews.count)")

if disposed == self.view.subviews.count - 1{
delegate.vcFinishedDisposing()
}
}

它表明 self.view.subviews 包含我所有的自定义 View + 3 个以上(UIView、_UILayoutGuide x 2)。尽管不调用responder.viewDisposed 方法,但它们确实扩展了 UIView。我的决定是弄清楚如何获取每个 subview 和 Mirror(reflecting: subView).subjectType 的类,如果我将它打印出来,效果会很好。有什么方法可以将它与任何东西进行实际比较,或者更好的是,获得 String 表示形式?基本上,我希望您帮助我创建一个方法,该方法将创建一堆 subview ,这些 subview 既不是 UIView 类型(仅子类)也不是 _UILayoutGuide。谢谢!

最佳答案

您可能最好直接创建一个只包含您关心的 subview 的数组,而不是从所有 subview 开始并尝试过滤掉您不关心的 subview 。这些布局指南并不总是存在——它们是在 iOS 7 中添加的。谁知道 Apple 将来还会添加什么?

无论如何:

let mySubviews = view.subviews.filter {
!["UIView", "_UILayoutGuide"].contains(NSStringFromClass($0.dynamicType))
}

关于ios - 识别 subview 的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34667571/

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