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];

デバイスが縦向きの場合は完璧に機能するようですが、向きが変わるとすぐに、追加されたピッカービューを除いてすべてが自動的に調整されます。

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

スミット

4

2 に答える 2

0

設定する必要があります:

self.languagePicker.autoresizingMask

これにより、構成された制約に従ってビューを自動的に調整できます。

于 2011-11-08T17:38:35.260 に答える
0

それはばかげた間違いでした。そのピッカービューをビュー自体に表示する代わりに、ドラッグしてxibに配置しました。それ自体を視野に入れることで問題は解決しました。

于 2011-11-12T20:42:40.937 に答える