[解決済み] UIViewControllerの上にclearColor UIViewControllerを表示する
質問
私は
UIViewController
ビューをサブビュー/モーダルとして、別の
UIViewController
ビューで、サブビュー/モーダルは透明で、サブビューに追加されたコンポーネントは何でも見えるようにする必要があります。問題は、私はサブビューがclearColorを持っている代わりに黒い背景を表示していることです。私は作ろうとしている
UIView
を黒背景ではなく、clearColorとして表示します。何が問題なのかわかる方いらっしゃいますか?何か提案があればお願いします。
FirstViewController.m
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
UIViewController *vc = [storyboard instantiateViewControllerWithIdentifier:@"SecondViewController"];
[vc setModalPresentationStyle:UIModalPresentationFullScreen];
[self presentModalViewController:vc animated:NO];
SecondViewController.m
- (void)viewDidLoad
{
[super viewDidLoad];
self.view.opaque = YES;
self.view.backgroundColor = [UIColor clearColor];
}
解決済み
: 問題点を修正しました。iPhoneでもiPadでも問題なく動作しています。モーダルビューコントローラーで、背景を黒にせず、clearColor/transparentで表示しています。ただ一つ変更しなければならないことは
UIModalPresentationFullScreen
を
UIModalPresentationCurrentContext
. なんてシンプルなんでしょう
FirstViewController.m
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];
注意事項
を使用している場合
modalPresentationStyle
プロパティの
navigationController
:
FirstViewController.m
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
UIViewController *vc = [storyboard instantiateViewControllerWithIdentifier:@"SecondViewController"];
vc.view.backgroundColor = [UIColor clearColor];
self.navigationController.modalPresentationStyle = UIModalPresentationCurrentContext;
[self presentViewController:vc animated:NO completion:nil];
注意:悪いニュースは、上記の解決策がiOS 7で動作しないことです。良いニュースは、iOS7用の問題を修正したことです! 私は誰かに助けを求めたのですが、その人が言ったことは以下の通りです。
ビューコントローラをモーダルに表示するとき、iOS はその下にあるビューコントローラを表示中の間、ビュー階層から削除します。 モーダルに表示されたビューコントローラのビューは透明ですが、その下にはアプリのウィンドウ以外何もなく、黒く表示されます。 iOS 7 では、新しいモーダルプレゼンテーションスタイルが導入されました。
UIModalPresentationCustom
これを利用すると、iOS は提示されたビューコントローラの下にあるビューを削除しないようになります。しかし、このモーダルプレゼンテーションスタイルを使用するためには、プレゼンテーションとディスイズアニメーションを処理するために、独自のトランジションデリゲートを用意する必要があります。 これは、WWDC 2013の講演「Custom Transitions Using View Controllers」で概説されています。
https://developer.apple.com/wwdc/videos/?id=218
では、独自の遷移デリゲートを実装する方法についても説明しています。
iOS7で上記の問題を解決した方法をご覧ください。 https://github.com/hightech/iOS-7-Custom-ModalViewController-Transitions
解決方法は?
解決済み : 問題点を修正しました。iPhoneでもiPadでも問題なく動作しています。モーダルビューコントローラーで、黒背景がないのは、clearColor/transparentだけです。UIModalPresentationFullScreenをUIModalPresentationCurrentContextに置き換えただけなんだけどね。なんてシンプルなんでしょう
FirstViewController.m
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];
注意事項 navigationControllerのmodalPresentationStyleプロパティを使用している場合。
FirstViewController.m
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
UIViewController *vc = [storyboard instantiateViewControllerWithIdentifier:@"SecondViewController"];
vc.view.backgroundColor = [UIColor clearColor];
self.navigationController.modalPresentationStyle = UIModalPresentationCurrentContext;
[self presentViewController:vc animated:NO completion:nil];
注意:悪いニュースは、上記の解決策がiOS 7で動作しないことです。良いニュースは、iOS7用の問題を修正したことです! 私は誰かに助けを求めたのですが、その人が言ったことは以下の通りです。
ビューコントローラをモーダルに表示するとき、iOS はその下にあるビューコントローラを表示中の間、ビュー階層から削除します。 iOS 7 では、新しいモーダルプレゼンテーションスタイルである UIModalPresentationCustom を導入し、iOS が、提示されたビューコントローラの下のビューを削除しないようにしました。しかし、このモーダルプレゼンテーションスタイルを使用するには、プレゼンテーションとディスイズアニメーションを処理するために、独自のトランジションデリゲートを用意する必要があります。 これは、WWDC 2013の講演「Custom Transitions Using View Controllers」で概説されています。 https://developer.apple.com/wwdc/videos/?id=218 では、独自のトランジションデリゲートを実装する方法についても説明しています。
iOS7での解決方法はこちらをご覧ください。 https://github.com/hightech/iOS-7-Custom-ModalViewController-Transitions
関連
-
[解決済み] Cocoapodsの使用時にXcodeの警告を無視する
-
[解決済み] UIImage。リサイズ、そしてクロップ
-
[解決済み] NSDictionaryをNSDataに、またはNSDataをNSDictionaryに変換するにはどうすればよいですか?
-
[解決済み] UIButton: 選択されたハイライト状態の画像を設定する
-
[解決済み] iPhone Safari ウェブアプリでリンクを新しいウィンドウで開く
-
[解決済み] Push Notificationのアラートテキストは何文字まで可能ですか?
-
[解決済み] viewWillAppear:と-viewDidAppear:の違いは何ですか?
-
[解決済み] リンカーフラグ -ObjC は何をするのですか?
-
[解決済み] Mac OS Xのスタティック・ライブラリ(.a)のターゲット・アーキテクチャはどのように決定するのですか?
-
[解決済み] Objective-Cのプロトコルでプロパティを含むものはどう扱えばいいのか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] UITextViewのキーボードをリターンキーで解除するには?
-
[解決済み] UILongPressGestureRecognizerが押し下げ時に2回呼び出される
-
[解決済み] iOSです。背景を透明にしたモーダルViewController
-
[解決済み] モバイルSafari(iPhone)でテキストエリアのインナーシャドウを除去する
-
[解決済み] iOSアプリでドキュメントフォルダ内にフォルダを作成する
-
[解決済み] drawRectを使うか使わないか(drawRect/Core Graphicsとsubview/imagesをいつ使うか、なぜ使うか)?
-
[解決済み] UIViewのサブビューをセンタリングする方法
-
[解決済み] CALayer setNeedsDisplayInRect:] の暗黙のアニメーションを無効にする。
-
[解決済み] iPhoneシミュレーターでカメラをテストするには?
-
[解決済み] iPhoneのデータ使用量のトラッキング/モニタリング