背景が透明なViewControllerをモーダルに追加して、下の親ViewControllerが表示されるようにします。 (これはiPad用ではなくiPhone用のアプリにあります。)
私はこれを試しました:
TextFieldViewController *vc = [self.storyboard instantiateViewControllerWithIdentifier:@"TextFieldVC"];
vc.modalPresentationStyle = UIModalPresentationCurrentContext;
vc.modalTransitionStyle = UIModalTransitionStyleCoverVertical;
[self.navigationController presentViewController:vc animated:YES completion:^{}];
運がなく、ビューコントローラーにクリアカラーの背景が与えられました。それが何かを変えるなら、私のビューコントローラーはストーリーボードにあります。
@Josh Kahaneは、このコードを-ViewDidLoad
に透過ビューコントローラーに提示するビューコントローラーを設定し、UIViewController
ビューのアルファチャネルを必ず1より低く設定してください。
コード:
self.modalPresentationStyle = UIModalPresentationCurrentContext;
完全を期して最新の状態にするために、Swiftのソリューションも追加しています。
どちらか
viewController.modalPresentationStyle = .CurrentContext
存在-コンテンツがプレゼンテーションビューコントローラーのコンテンツのみに表示されるプレゼンテーションスタイル。
または
viewController.modalPresentationStyle = .OverCurrentContext
存在-コンテンツが親ViewControllerのコンテンツのみに表示されるプレゼンテーションスタイル。表示されたコンテンツの下のビューは、表示が終了してもビュー階層から削除されません。したがって、提示されたView Controllerが不透明なコンテンツで画面を埋めない場合、基になるコンテンツが透けて見えます。
プレゼンテーションの要件と状況に応じて。
私は解決策を探していました。 iOS 8に感謝します。彼らは、いくつかの新しいmodalPresentationStyleを導入しました。それらの1つはUIModalPresentationOverCurrentContextです。この問題を解決するために同じものを使用しました。
viewcontroller.modalPresentationStyle = UIModalPresentationOverCurrentContext;
お役に立てれば。
簡単に忘れられるステップがたくさんありますが、それは可能です。これを4時間機能させるのに苦労した後、私は次の解決策を思いつきました。
1-他のようにView Controllerを作成します。
ヘッダーファイル
#import "DDBaseViewController.h"
@interface DDHomeSearchLoadingViewController : UIViewController
@end
実装ファイル
#import "DDHomeSearchLoadingViewController.h"
@interface DDHomeSearchLoadingViewController ()
@property (weak, nonatomic) IBOutlet UIActivityIndicatorView *activityMonitor;
@property (weak, nonatomic) IBOutlet UIView *modalView;
@end
@implementation DDHomeSearchLoadingViewController
#pragma mark - UIViewController lifecycle
- (void)viewDidLoad
{
[super viewDidLoad];
[self setupUI];
}
-(void) setupUI
{
[self makeRoundedCorner:self.modalView AndCornerRadius:6.0f];
[self.activityMonitor startAnimating];
}
-(void) makeRoundedCorner:(UIView*) view AndCornerRadius:(float) cornerRadius
{
[view.layer setCornerRadius:cornerRadius];
[view.layer setMasksToBounds:YES];
}
@end
2-コンテナビューの背景色をClearColorとして設定します
-オーバーレイのように表示されるUIViewを追加します
4-オーバーレイUIView上にダイアログボックスのように表示されるUIViewを追加します
追加/移動するときはオーバーレイビューの外側にあることを確認してください。何らかの理由でマウスを使用して移動すると、オーバーレイUIViewに自動的に追加されます。(正直言って迷惑です) )
5-作成したビューのストーリーボードIDを設定します
6-最後に、このコードを呼び出さない場所に追加します(UiViewControllerでもあると仮定します)
DDHomeSearchLoadingViewController* ddHomeSearchLoadingViewController = [[UIStoryboard storyboardWithName:@"Main" bundle:nil] instantiateViewControllerWithIdentifier:@"DDHomeSearchLoadingViewController"];
self.navigationController.modalPresentationStyle = UIModalPresentationCurrentContext;
[self presentViewController:ddHomeSearchLoadingViewController animated:YES completion:nil];
私はそれがあなたたちを助けることを願っています
乾杯
スウィフト3-
vc.modalPresentationStyle = .overFullScreen
をお試しください
let vc = self.storyboard!.instantiateViewControllerWithIdentifier("ExampleViewController") as! ExampleViewController
vc.view.backgroundColor = UIColor.clearColor()
vc.modalPresentationStyle = .overFullScreen
self.presentViewController(vc, animated: true, completion: nil)
UIStoryboard *story = [UIStoryboard storyboardWithName:@"Main" bundle:[NSBundle mainBundle]];
ChooseController *sec=[story instantiateViewControllerWithIdentifier:@"Controller"];
sec.modalPresentationStyle = UIModalPresentationOverCurrentContext;
sec.modalTransitionStyle = UIModalTransitionStyleCoverVertical;
[self presentViewController:sec animated:YES completion:^{
}];
注:現在のコントローラーのスーパービューのアルファ値は、0.5アルファのように1未満である必要があります。