2011-01-12 5 views
1

サブビューとしてビュー階層に追加できるUIViewのサブクラスであるオブジェクトがあります。私はそのスーパービューからUIViewを削除し、それをメインウィンドウのサブビューとして追加してフルスクリーンに展開したいと考えています。線に沿ってスーパービューからUIViewを削除し、そのフレームをフルスクリーンに展開

何か:

// Remove from superView and add to mainWindow 
[self retain]; 
[self removeFromSuperView]; 
[mainWindow addSubView:self]; 

// Animate to full screen 
[UIView beginAnimations:@"expandToFullScreen" context:nil]; 
[UIView setAnimationDuration:1.0]; 
self.frame = [[UIScreen mainScreen] applicationFrame]; 
[UIView commitAnimations]; 

[self release]; 

まず、私は右の行にしていますか?次に、オブジェクトがmainWindowへのポインタを取得する簡単な方法はありますか?

おかげ

デイブ

+0

あなたの2番目の質問に答える:UIWindow * mainWindow = [[UIApplication sharedApplication] keyWindow]; – Felix

答えて

3

あなたは

self.window 
+0

乾杯Andriy、完全に1つを逃した。また、ビューにスーパービューを1つしか持てないため、スーパービューからの削除も非常に簡単です。つまり、[self.window addSubView:self]は、retainとremoveFromSuperViewの必要なしにトリックを行うようです。 Daveについて。 –

2

ビューのwindowプロパティを使用することができよさそうです。しかし、アニメーションを開始する前に、ビューのフレームをスーパービュー座標系からウィンドウの座標系に変換することができます。さもなければ、アニメーションは滑らかではありません。

+0

こんにちはKris、スーパービューではなくメインウィンドウを基準にビュー階層内のビューの座標を取得する方法はありますか?フレームのプロパティは親ビューとの相対的なものです。つまり、ツリーをたどって、オーナナイトを手動で計算する必要がありますか? –

+2

UIViewにはその変換に便利なメソッドがあります:[UIView convertRect:toView:](メインウィンドウもビューです)http://developer.apple.com/library/ios/ipad/#documentation/uikit/reference/UIView_Class /UIView/UIView.html。 –

+0

パーフェクト、ありがとうクリス、非常に便利です。あなたのコメントを投票しました。デイブ –

関連する問題