ViewControllerでモーダルビューを表示したい。 (ナビゲーションコントローラーがあります)。
私のビューには、テキストと、モーダルビューを表示するボタンがあります。
モーダルビューを含む.xibを作成しました(これは画像とラベルのあるビューです)。
それを見せたら、それで:
ShareController *controller = [[ShareController alloc] initWithNibName:@"ShareController" bundle: nil];
controller.view.backgroundColor = [UIColor clearColor];
controller.modalPresentationStyle = UIModalPresentationFormSheet;
controller.modalTransitionStyle = UIModalTransitionStyleCoverVertical;
[self presentViewController:controller animated:YES completion:nil];
私はモーダルビューを持っていますが、背景は黒になります..私は常に私のビューにテキストを表示したいです。 (私はアルファなどを設定しようとしましたが、何も実行されません: '()
私を助けてくれる人?
おかげで、
あなたはiOS7の例をチェックすることができます(私の通信を参照してください)、またはあなたはこれを簡単に試すことができます:
「表示」メソッドからこの行を削除します
controller.view.backgroundColor = [UIColor clearColor];
現在、ShareController
のviewDidLoadで次を追加します。
self.view.backgroundColor = [UIColor clearColor];
self.modalPresentationStyle = UIModalPresentationCurrentContext;
self.modalPresentationStyle = UIModalPresentationFormSheet;
PS
navigationControllerがある場合...
[self.navigationController presentViewController:controller animated:YES completion:nil];
次のスニペットを使用して、iOS 8以降で実行します。
Objective Cの場合:
UIViewController *walkThru = [self.storyboard instantiateViewControllerWithIdentifier:@"WalkThroughScene"];
walkThru.providesPresentationContextTransitionStyle = YES;
walkThru.definesPresentationContext = YES;
[walkThru setModalPresentationStyle:UIModalPresentationOverCurrentContext];
[self.navigationController presentViewController:walkThru animated:YES completion:nil];
Swift 2:の場合
let viewController : XYZViewController = self.storyboard!.instantiateViewControllerWithIdentifier(“XYZIdentifier”) as! XYZViewController
viewController.providesPresentationContextTransitionStyle = true
viewController.definesPresentationContext = true
viewController.modalPresentationStyle=UIModalPresentationStyle.OverCurrentContext
self.presentViewController(viewController, animated: true, completion: nil)
Swift 4:の場合
let viewController = self.storyboard!.instantiateViewController(withIdentifier: "XYZIdentifier") as! XYZViewController
viewController.providesPresentationContextTransitionStyle = true
viewController.definesPresentationContext = true
viewController.modalPresentationStyle = .overCurrentContext
self.present(viewController, animated: true, completion: nil)
また、表示されるviewControllerの背景色はclearColorでなければなりません。
ModalVCをタブバー上に配置するには、プレゼンテーションスタイルをUIModalPresentationOverFullScreen
として定義する必要があります
[_presentedViewController setModalPresentationStyle:UIModalPresentationOverFullScreen];
[_presentingViewController presentViewController:_presentedViewController animated:YES completion:nil];
PresentingViewController
で、ストーリーボードセグエまたはIBActionの下の以下のコードをコピーします。
SecondViewController *viewController = [self.storyboard instantiateViewControllerWithIdentifier:@"secondViewController"];
//SecondViewController *viewController = [SecondViewController alloc]init]; // if you are adding the viewcontroller programatically
viewController.modalPresentationStyle = UIModalPresentationOverCurrentContext;
[viewController setModalTransitionStyle:UIModalTransitionStyleCrossDissolve];
[self presentViewController:viewController animated:YES completion:nil];
2番目のViewController
では、ストーリーボードまたはコードを使用して次の手順を実行します。
self.view
)backgroundcolorからclearcolorに変更し、不透明度を50%に減らします簡単な答えは、presentViewController:animated:completion:メソッドではなく、透明なモーダルビューを表示できないことです。モーダルビューコントローラーを透明にすることはできないためです(ビューはその上に配置されます)。
カスタムビューを作成し、手動でアニメーション化できます。これは、必要なものを作成する方法です。
それはUIWindow's
色、appDelegateでUIWindow
色を初期化できます。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Override point for customization after application launch.
self.window.backgroundColor = [UIColor whiteColor];
return YES;
}