0

iPad アプリで、ビデオを録画しています (UIImagePickerControllerUIPopoverController)。

問題は、デバイスの向きを変更すると、のサイズがUIPopoverController320x480 (縦向きの場合) および 480x320 (横向きの場合) に縮小することです。驚いたことに、まったく同じサイズ (600x880) は、作成時には正常に機能しますが、回転時には機能しません。

これが私が初期化する方法です:

self.popover = [[UIPopoverController alloc] initWithContentViewController:imagePicker];
popover.delegate = self;
if ([[UIApplication sharedApplication] statusBarOrientation] == UIDeviceOrientationPortrait || [[UIApplication sharedApplication] statusBarOrientation] == UIDeviceOrientationPortraitUpsideDown) {
    [self.popover presentPopoverFromRect:CGRectMake(109, 590, 550,500) inView:self.view permittedArrowDirections:0 animated:YES];//recordProtocolBtn.frame
    [self.popover setPopoverContentSize:CGSizeMake(600, 880)];
}
else {
    [self.popover presentPopoverFromRect:CGRectMake(750, 110, 550, 600) inView:self.view permittedArrowDirections:UIPopoverArrowDirectionRight animated:YES];
    [self.popover setPopoverContentSize:CGSizeMake(600, 600)];
}

縦向きに回転:

[self.popover dismissPopoverAnimated:NO];
[self.popover presentPopoverFromRect:CGRectMake(109, 590, 550,500) inView:self.view permittedArrowDirections:UIPopoverArrowDirectionDown animated:YES];
[self.popover setPopoverContentSize:CGSizeMake(600, 880)];

そして横向きに回転します:

[self.popover dismissPopoverAnimated:NO];
[self.popover presentPopoverFromRect:CGRectMake(750, 110, 550, 600) inView:self.view permittedArrowDirections:0 animated:YES];
[self.popover setPopoverContentSize:CGSizeMake(600, 600)];
4

1 に答える 1

2

私がしたことは厳密には解決策ではなく、回避策です。

この回答 の助けを借りて、を提示したときに向き変更通知の起動を無効にし、UIPopoverControllerそれを閉じたときに有効にしました。

ユーザーはビデオ録画中にアプリが回転するのを好まないと思うので、この方法でアプリはスムーズに動作します。

于 2013-03-01T04:21:53.350 に答える