有没有办法在运行时检测用户界面上的每个更改?
我试图找到当前应用界面中的所有对象。
我试图让所有节点递归地检查主窗口,但是,例如,如何知道顶部视图控制器是否发生变化,或者它是否动态添加了uiview,或者是一个模态视图??
主要目标是建立一个图书馆。
任何想法,帮助?
谢谢!
答案 0 :(得分:0)
您可以使用高级Objective-C技术在此基础上编写自己的库。我不建议你这样做,因为它主要打破iOS上的MVC模式。取决于你想用它做什么,也许是分析?
因此,如果您想积极检查UIView
层次结构,那么这些是我认为的选项。但是所有选项都非常复杂。
Swizzle methods ,例如addSubview
的{{1}}和removeFromSuperview
,因此您可以知道此类更改何时发生。如果您想知道位置,请包括框架和边界的吸气剂。
您可以使用 KVO 来观看以下属性:UIView
,subviews
,frame
,bounds
注意到任何变化。但有一点你必须添加与观察者相同的对象(可能是单身)。
确定由 a superview
触发的间隔,然后从NSTimer
keyWindow
开始递归遍历层次结构。这会产生很大的性能影响。
可能还有其他选择,但我认为这些是最佳选择。