2013-08-09 8 views
5

NIBを使用して手動ビューの作成(loadView)と自動レイアウトを使用する古いコードを移行しています。ルートビューコントローラは、コンテナVC(2つの子を持つ)で、自動レイアウトを使用し、NIBで指定されたレイアウトを持ち、まだ自動レイアウトを使用していないビューコントローラをモーダルに表示します。 presentViewController:animated:completion:の後はすべて問題ありませんが、モーダルビューがデリゲートコールでdismissViewControllerAnimated:completion:で閉じられると、プレゼンテーションビューはコンテンツが奇妙にシフトして反応しない、奇妙で使用できない状態になります。dismissViewControllerAnimatedの後で使用できなくなりました:完了:

問題を再現するために最小のテストケースを作成しようとしましたが、問題の再現に失敗しました。

この原因は何ですか?

+0

http://stackoverflow.com/questions/17666907同じ問題を説明しているようです。 – Palimondo

答えて

7

UIViewにはtranslatesAutoresizingMaskIntoConstraints = NO;を設定しました。 "最も外側に"表示されますUIView - ビュー階層のルートにあるスーパービューはデフォルトのtranslatesAutoresizingMaskIntoConstraints = YESを使用する必要があります。 これを削除すると、すべて正常に機能しました。

+0

これは親ビューコントローラのビュー階層に追加された後でも、子ビューコントローラのルートビューに適用されますか? – bilobatum

+0

こんにちは。私は問題のサンプルプロジェクトで関連する質問を投稿しました:http://stackoverflow.com/questions/40428075/segue-from-a-slpagingviewswift-vc-and-dismiss-the-destination-vc-to-return i自分のコンテキスト(SLPagingView)で見つけたソリューションを実装する方法を見つけることができません。誰かが見て、助けてもらえれば、私はそれをたくさん感謝します、ありがとう! –

0

私は同じ問題を抱えています。このナビゲーションコントローラを試してみると、うまく動作していましたが、現在のviewcontrollerでは動作しませんでした。この問題を解決するには、translateAutoresizingMaskIntoConstraintsとともに、コントローラの下のビューメソッドを使用します。

-(void) viewWillLayoutSubviews 
{ 
    [super viewWillLayoutSubviews]; 

    self.view.translatesAutoresizingMaskIntoConstraints = NO; 
} 

私は今それを気にしてください。ありがとう

0

コンテナビュー(サブビューとは対照的に)内のビューコントローラから表示すると見つかりましたが、SegueをModalからShowに切り替えると、コンストレインは最初のビューで同じになりますがまるであなたがモーダルに提示したようにアニメートしても、まだdismissViewControllerを正しく呼び出すことができます。

2

IOS 11にアップグレードするときに問題が発生しました.UICollectionViewレイアウトにセルが表示されなくなりました。

controller.modalPresentationStyle = UIModalPresentationOverFullScreen; 
[self presentViewController:controller animated:YES completion:nil]; 

プレゼンテーションスタイルを修正する理由はわかりませんが、レイアウトのプレゼンテーションコントローラでは実際にはわかりません。