2011-11-08 10 views
0

ユーザーが行をタップしたときにUItableviewcontrollerにpickerviewを追加しています。私はそれを表示する次のコードを使用しています。 [self.view.window addSubview:languagePicker];デバイスの向きが変更されたときに、画面上のサブビュー位置を調整するにはどうすればよいですか?

CGRect screenRect = [[UIScreen mainScreen] applicationFrame]; 
    CGSize pickerSize = CGSizeMake(768.0, 216.0); 
    CGRect startRect = CGRectMake(0.0, 
            screenRect.origin.y + screenRect.size.height, 
            pickerSize.width, pickerSize.height); 
    self.languagePicker.frame = startRect; 

    // compute the end frame 
    CGRect pickerRect = CGRectMake(0.0, 
            screenRect.origin.y + screenRect.size.height - pickerSize.height, 
            pickerSize.width, 
            pickerSize.height); 


     self.languagePicker.frame=startRect; 
     [UIView beginAnimations:nil context:nil]; 
     [UIView setAnimationDuration:0.5]; 
     [UIView setAnimationTransition:UIViewAnimationOptionTransitionNone forView:self.view.window cache:YES]; 
     [self.languagePicker setFrame:pickerRect]; 
     [UIView commitAnimations]; 

デバイスが縦向きにあるが、すぐに向きが変わると、すべてが追加ピッカービューを除いて、それ自体を調整する際の完璧な動作するようです。

私はデバイスの方向を取得し、古いビューを削除し、方向に応じて新しいものを追加することができますが、それは良い方法かどうかはわかりません。それ以外の効果的なやり方はできますか?

スミット

答えて

0

私はちょうどそれをドラッグしてxibに入れたのではなく、ピッカービューをビュー自体に置くのではなく、愚かな間違いでした。それを視野に置くこと自体が問題を解決しました。

0

あなたが設定する必要があります。

self.languagePicker.autoresizingMask 

をこれが自動的に設定された制約に応じて調整するためのビューを助けます。

+0

自動サイズ設定の詳細や詳細を教えてもらえますか? – slonkar

+0

をご覧ください:http://developer.apple.com/library/IOS/#documentation/UIKit/Reference/UIView_Class/UIView/UIView.htmlそしてautoresizingMaskを探してください。 – samfisher

+0

彼の投稿を見てみたいかもしれません:http://stackoverflow.com/questions/3069388/uiview-autoresizingmask-problem – samfisher

関連する問題