0

我想跟踪我的UIView's(和 的子类UIViews),在这种情况下,它们的框架。我想保留一个指示我的每个子视图NSDictionary及其相关框架的指针。

我实现了这样的东西;

    NSMutableDictionary *subviewRects = [[NSMutableDictionary alloc] init];

    // iterate through all subviews ans save their CGRects
    for (UIView *subview in self.holder.subviews) {
        NSValue *rectValue = [NSValue valueWithCGRect:subview.frame];
        [subviewRects setObject:rectValue forKey:[NSString stringWithFormat:@"%d",subview.hash]];
    }

但是我不确定这是否是实现这一目标的正确方法,或者更重要的是,在相关的生命周期中hash属性会UIView发生变化UIViewController吗?

注意:我忘了告诉在这种情况下我不能使用tag属性。UIView

4

1 回答 1

1

我知道的大多数 UIView 继承者都会有一个静态哈希值。但是,请注意:这不能保证是真的,因为子类可以覆盖散列。

相反,最好通过简单的命名方案或简单地使用对象指针来保存引用来跟踪您的视图(使用 %p 而不是 %@ 来获取对象的指针而不是描述)。

顺便说一句:请注意您正在使用控制器视图对象的哈希值来存储子视图的每个矩形。您确定您不是要使用每个子视图的哈希值吗?

于 2013-05-30T14:32:43.903 回答