2012-05-10 9 views
0

私はUITextViewを含むUIView(私はそれをaViewと呼ぶ)のサブクラスを持っています。ユーザーは必要に応じてaViewのサイズを変更したり回転させたりすることができ、最終的にユーザーがアプリを実行したときと同じ場所、サイズ、回転にaViewを復元することが目的です。UIViewサブクラスのサイズ、原点、および回転を正しく復元する方法は?

私のエンコードは次のようになります。

[encoder encodeCGRect:self.view.frame forKey:@"annotationFrame"]; 
[encoder encodeCGPoint:self.view.center forKey:@"annotationCenter"]; 
[encoder encodeCGRect:self.textView.frame forKey:@"textViewFrame"]; 
[encoder encodeCGAffineTransform:self.view.transform forKey:@"transform"]; 

とinitwithCoder:(私はそうbgcolorsを追加しました:

CGRect frame = [decoder decodeCGRectForKey:@"annotationFrame"]; 
    CGPoint center = [decoder decodeCGPointForKey:@"annotationCenter"]; 
    CGRect tvframe = [decoder decodeCGRectForKey:@"textViewFrame"]; 
    CGAffineTransform transform = [decoder decodeCGAffineTransformForKey:@"transform"]; 

    self.view.frame = frame; 
    self.view.center = center; 
    self.view.transform = transform; 
    self.textView.frame = tvframe; 

しかし、ここでは、のように見える 'の後' 何の前に 'とありますフレームが見える)。回転は正しいように見えますが、原点とフレームのサイズは正しくありません。私は何が間違っているのか分からないのですか?それはビューの境界、中心部と変換プロパティに基づいて計算される - frameプロパティは、あなたはそれがあることを期待するものではないかもしれ回転ビューの場合

答えて

0

after

before。保存し、それは、ビューの変換

[encoder encodeCGRect:self.view.bounds forKey:@"annotationBounds"]; 

... 

CGRect bounds = [decoder decodeCGRectForKey:@"annotationBounds"]; 
... 
self.view.bounds = bounds; 
+0

ウラジミールに影響されないよう代わりframeのビューのboundsプロパティを復元しようと、私はちょうどそれを試してみましたが、基本的に同じ結果を得ました。 – skantner

+0

@skantner、dunno then :(デバッガでどのような値が間違っているかをチェックしようとする... – Vladimir

関連する問題