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 を使用して、説明ではなくオブジェクトのポインターのみを取得します)。

余談ですが、コントローラーのビュー オブジェクトのハッシュ値を使用して、サブビューの各 rect を格納していることに注意してください。各サブビューのハッシュ値を使用するつもりはありませんか?

于 2013-05-30T14:32:43.903 に答える