webdevqa.jp.net

iOS 7で別のViewControllerの上に明確な色のView Controllerを表示する

IOS 7以前では、この人気のStackoverflow question、 によると、明確な背景を持つViewControllerを表示する方法は、メインViewControllerで次のようにすることでした:

    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
    UIViewController *vc = [storyboard instantiateViewControllerWithIdentifier:@"SecondViewController"];
    vc.view.backgroundColor = [UIColor clearColor];
    self.modalPresentationStyle = UIModalPresentationCurrentContext;
    [self presentViewController:vc animated:NO completion:nil];

しかし、私が最近iOS 7で発見した(そして他の人が主な回答にコメントした)ので、上記のソリューションはもはや機能せず、代わりに黒いモデルのコントローラーのみが表示されます。透明度は主にiOS 7で使用されているので、透明なビューコントローラーが可能性が高いです。私はまだこの問題の回避策を発見していません。誰かがこの問題を解決する方法を知っているのではないかと思っていました。ありがとう!

15
daspianist

私は元のソリューションに従い、Interface Builderでいくつかのデフォルト設定とカスタム設定を適用しましたが、機能しているようです。

重要なセクション(質問のコードとかなり似ています):

- (IBAction)click:(id)sender {
    NSLog(@"click");


    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
    UIViewController *vc = [storyboard instantiateViewControllerWithIdentifier:@"TopOverVc"];

    vc.view.backgroundColor = [UIColor clearColor];
    self.modalPresentationStyle = UIModalPresentationCurrentContext;
    [self presentViewController:vc animated:NO completion:nil];
}
  • また、plsはIB snaphotを見つけます。 enter image description here

  • シミュレータの結果(ボタンを押した後):

enter image description here

私はあなたの質問で間違ったことを誤解していないことを願っています;)ハッピーコーディング!

8
nzs