2012-05-08 22 views
1

私は複数のUIImageViewsに画像を追加するテストアプリケーションを作成しています。ユーザーはこれらの画像を移動して回転させることができます。私はUIGestureRecognizersを用意して作業していますが、ユーザーがスクリーン上に画像を残す場所を追跡する必要もあります。そうすれば、アプリを閉じて戻ってくると、画像を置いた場所が記憶されます。iOS 5画面上のオブジェクトの位置

私はこれにNSUserDefaultsを使用しているはずですが、私の質問は、おそらく大量のUIImageViewの画面上の位置を追跡する方法です。私は何とかそれらのx/y座標を取得し、それをNSUserDefaultsで保存する必要があると仮定します。

誰でもこれを行う方法の提案がありますか?

-ブライアン

答えて

5

UIViewのプロパティのサブビューがあります。私は配列をループすることをお勧めします。次に例を示します:

イメージビュー全体を座標辞書のキーとして保存する代わりに、メモリを節約するために識別子を使用できます。オブジェクトはNSValueなので、x/y値を取得するには[[value pointValue] x]または[[value pointValue] y]を使用できます。

ここでは、データを読み取って元の状態に戻す例を示します。

NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults]; 
NSDictionary *coordinates = [userDefaults dictionaryForKey:@"ImageViewCoordinates"]; 
//Key can be any type you want 
for (NSString *key in coordinates.allKeys) { 
    UIImageView *imageView; 
    //Set UIImageView properties based on the identifier 
    imageView.frame.origin = [coordinates objectForKey:key]; 
    [self.view addSubview:imageView]; 
    //Add gesture recognizers, and whatever else you want 
} 
関連する問題