モーダル表示が真っ黒になる
iOSのアプリを作る場合、見た目は色々あれど下記のようなモーダル表示を良く行います。
このような表示をする場合はpresentViewControllerを使い、モーダル表示される側のViewControllerを透過させる事で表示が行えます。
※わかりにくいですが、青がpresentViewControllerをした側で、オレンジがpresentViewControllerで表示された側です。
しかし、iOS8のSDK(XCode6)でビルドした場合では、下記のように表示されてしまいました。
モーダル表示される側は表示されていますが、後ろに居るはずのViewControllerが真っ黒になってしまいます。
解決策として
調べた結果、iOS8ではUIModalPresentationStyleに新しく「UIModalPresentationOverCurrentContext」が追加されており、表示される側のViewControllerに下記を追加する事で、真っ黒になる現象を解決する事ができます。
1 2 3 4 |
- (UIModalPresentationStyle)modalPresentationStyle { return UIModalPresentationOverCurrentContext; } |
また、presentViewControllerする時に追加しても大丈夫です。
1 2 3 |
PTModalViewController *vc = [[self storyboard] instantiateViewControllerWithIdentifier:@"PTModalViewController"]; vc.modalPresentationStyle = UIModalPresentationOverCurrentContext; [self presentViewController:vc animated:YES completion:nil]; |
実行した結果は下記になります。
従来通りに表示する事ができました。