我需要找到一种方法来创建一个在应用程序中始终存在的类。该类对项目中的其他类一无所知。它将能够“跟随”屏幕上的所有UIViews
- 所以每一刻我都可以检查(循环)视图,并获得指向每个视图的指针。
它必须运行,并始终检查视图的位置(这是一个内存问题?)
为什么指针?因为我需要了解它的一切,所以如果它是某种移动动画,或者它有一些元数据,如标签等等,所以只知道在某个位置有一些视图是不够的。
是否可以iOS
?
答案 0 :(得分:1)
整个想法听起来像一个反模式。但是,......
只需遍历视图树,并为每个有趣属性的每个视图添加一个KVO处理程序。
- (void)traverseSubviewsOfParentView:(UIView*)view
for( UIView* subview in view.subviews )
{
[view addObserver:self forKeyPath:@"frame" options: NSKeyValueObservingOptionNew];
…
[self traverseSubviewsOfParentView:subview context:NULL];
}
然后实施观察方法:
-(void)observeValueForKeyPath:(NSString *)keyPath
ofObject:(id)object
change:(NSDictionary *)change
context:(void *)context
{
if( [@"frame" isEqualToString:keyPath] )
{
// Do what you want to do
}
…
}
此外,您必须观察每个视图的subviews
属性,以便在插入或删除视图时收到通知。