アプリケーションで UIActionsheet を表示しようとしています。縦向きモードでは完全に機能しますが、横向きに表示しようとすると、下からスライドします。ただし、ランドスケープ モードの場合のように、ピッカー コントロールでボタンやディスプレイを使用しなくなりました。間違った位置にあるだけです。
私は自動回転を使用せず、すべてを縦向きモードに保ちます。時折、ランドスケープ モードで物事を表示していて、アクションシートを適切に表示したいことがあります。
ステータスバーの向きを次のように設定しています...
[[UIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientationLandscapeLeft animated:NO];
「ランドスケープ モード」の場合、ステータス バーは常に正しく表示されます。AlertView を表示すると、正しく表示されます。次に、このようにアクションシートを表示しています
UIActionSheet *as = [[UIActionSheet alloc] initWithTitle:nil delegate:self cancelButtonTitle:@"Cancel Button" destructiveButtonTitle:nil otherButtonTitles: @"button", nil];
as.actionSheetStyle = UIActionSheetStyleBlackOpaque;
[as showInView:self.view];
//[as showFromToolbar:toolbar];
アプリのデリゲートとツールバーからも表示しようとしました。表示する直前にステータスバーの向きを設定しても、まだ機能しません。私も試してみました。
[[UIDevice currentDevice] setOrientation:UIInterfaceOrientationLandscapeLeft];
アクションシートが正しいコントロールで間違った位置に表示される理由を知っている人はいますか? または、アクションシートを特定の位置に強制的に表示する方法。アクションシートを正しく表示するために、独自のバージョンのアクションシートを実装する必要はありません。
前もって感謝します。
編集/解決策:アクション シートを強制的に横向きモードで表示する
これが私がそれを機能させる方法です。横向きのビューを作成し、メインウィンドウに次のように追加しました。
landscapeView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 480, 480)];
landscapeView.transform = CGAffineTransformMakeRotation((-1)*M_PI/2);
landscapeView.bounds = CGRectMake(0, 0, 480, 380);
[appDelegate.window addSubview:landscapeView];
そして、このように私のアクションシートを表示しました
if (landscape) {
[menu showInView:landscapeView];
} else {
[menu showInView:self.view];
}
tcさん、ありがとうございます。ここで私を正しい方向に向けてくれて。