ios - 识别用于保存信息的 UIView

标签 ios objective-c uiview hash

我想跟踪我的 UIView's (以及 UIViews 的子类),在本例中是它们的框架。我想在 NSDictionary 中保留一个指示我的每个 subview 的注释。及其相关框架。

我实现了这样的东西;

    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的属性(property)相关UIViewController生命周期内的变化?

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

最佳答案

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

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

顺便说一句:请注意,您正在使用 Controller View 对象的哈希值来存储 subview 的每个矩形。您确定不是要使用每个 subview 的哈希值吗?

关于ios - 识别用于保存信息的 UIView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16838708/

相关文章:

ios - 使用 SOAP 网络服务时出现 "No Action header was found"错误消息

iPhone - self.view 在 initWithNibName 子类中为 nil,并且未调用 viewDidLoad

ios - 从 CKRecord 获取 CKRecordZone

ios - 通过if-else条件的iOS表单验证错误无法正常工作

ios - XCode 预处理器宏 #if 仍然包含与符号定义为 0 相反的代码

ios - 自动调整 UITableViewCell 阴影大小已关闭

iphone - 使 iPhone 应用程序兼容 iOS 5

objective-c - 在文档加载时执行 Objective-C 方法

ios - 我的按钮和 textview 没有显示在 iOS 的屏幕上?

objective-c - @synthesize 创建什么 UIView setter