1

ボタンが押されたときに日付ピッカー ビューを追加する場所を決定するために、view.bounds を使用しています。ビューがナビゲートされたときと向きが同じであれば、これはうまく機能します。残念ながら、ビューが表示されている間に向きが変わると、境界が更新されないため、ピッカー ビューが正しく表示されません。ビューの実際の境界を決定する方法が必要です。ユニバーサルアプリなので、できればiPadでもiPhoneでも使えるものが欲しいです。また、iPad バージョンでは、ピッカー ビューは分割ビューの詳細コントローラーにあるため、高さと幅を入れ替えてナビゲーション バーを調整することはできません。

-(void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation
{
   [super didRotateFromInterfaceOrientation:fromInterfaceOrientation];

   // size up the picker view to our screen and compute the start/end frame origin for      our slide up animation
   //
   // compute the start frame

    CGRect screenRect = self.view.bounds;
    CGSize pickerSize = [self.pickerView sizeThatFits:CGSizeZero];
    CGRect startRect;
    CGRect pickerRect;
    UIInterfaceOrientation orientation = [[UIApplication sharedApplication] statusBarOrientation];
    if (UIInterfaceOrientationIsPortrait(orientation))
    {
        // code for Portrait orientation
        startRect = CGRectMake(0.0,
                               screenRect.origin.y + screenRect.size.height,
                               pickerSize.width, pickerSize.height);
        pickerRect = CGRectMake(0.0,
                                screenRect.origin.y + screenRect.size.height - pickerSize.height,
                                screenRect.size.width,
                                pickerSize.height);

    }
    else
    {
        //code for landscape
        startRect = CGRectMake(0.0,
                               screenRect.origin.y + screenRect.size.height,
                               pickerSize.width, pickerSize.height);
        pickerRect = CGRectMake(0.0,
                                screenRect.origin.y + screenRect.size.height - pickerSize.height,
                                screenRect.size.width,
                                pickerSize.height);


    }

    self.pickerView.frame = startRect;

    // start the slide up animation
    [UIView beginAnimations:nil context:NULL];
    [UIView setAnimationDuration:0.3];

    // we need to perform some post operations after the animation is complete
    [UIView setAnimationDelegate:self];

    self.pickerView.frame = pickerRect;
}
4

2 に答える 2

0

問題を正しく理解している場合は、次のように設定してみてください。

self.view.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;

ビューで、向きが変わったときに境界が「更新」されるようにします。

于 2013-01-15T15:42:09.720 に答える