2017-12-21 12 views
0

子ビューコントローラをスクロール3.0で親ビューコントローラにプログラムで追加しました。子ビューコントローラの幅を変更する

しかし、子ビューコントローラの幅を全画面にしたくない場合は、子ビューコントローラの幅と高さをカスタマイズする必要があります。カスタムサイズの子ビューコントローラを開こうとしましたが、動作しません。

// Here is my code 

let secondViewController = storyboard.instantiateViewController(withIdentifier: storyBoardName) 
secondViewController.modalPresentationStyle = UIModalPresentationStyle.custom 
secondViewController.view.frame = CGRect(x: 0, y: 0, width: self.view.bounds.width-500, height: self.view.bounds.height) 
self.present(secondViewController, animated: false, completion: nil) 

これを行う方法はありますか?

+0

この種類の使用のために、ストーリーボード上のビューコントローラ全体ではなくカスタムビューを作成することをおすすめします。ストーリーボードでカスタムビューを作成し、IDを与え、親ビューコントローラー内でビューをインスタンス化し、それを親ビューに追加します。ビュー用のコントローラが必要な場合は、コントローラを作成してビューをインスタンス化するだけで、親ビューコントローラが特定の子ビューをアタッチするためのメソッドを提供します。 – viz

答えて

0

コードでは、childviewコントローラとしてsecondViewControllerを追加していません。あなたはそのView Controllerを提示しています。違いがあります。

UIModalPresentationStyle.customを使用して、カスタムスタイルを使用してviewcontrollerを表示しようとしています。しかし、このカスタムスタイルを使用することはこれほど簡単なことではありません。 documentationから

カスタムスタイルを作成するには、 がUIPresentationControllerをサブクラス化し、 に画面上に任意のカスタムビューをアニメーション化すると 提示ビューコントローラのサイズと位置を設定し、そのメソッドを使用することを含みます。プレゼンテーションコントローラはまた、 の枠を設定するために提示 ビューコントローラの特徴

への変更のそれはあなたがUIPresentationControllerをサブクラス化し、(他の方法で)そのメソッドをサブクラス化する必要があることを示しています発生任意の適応- (CGRect)frameOfPresentedViewInContainerViewを扱います提示されたビューコントローラ。

さらに詳しくはthis linkで説明されています。

実際にchildviewcontrollerを追加することで、これをすべて達成できます。 手順は次のようになります。

  1. 子ビューコントローラのインスタンスを作成します。
  2. ビューフレームを任意の値に設定します。
  3. addSubview:
  4. コールを使用して、親のView Controllerのビューに上サブビューとして、そのビューを追加[addChildViewController]親viewcontrller上(https://developer.apple.com/documentation/uikit/uiviewcontroller/1621394-addchildviewcontroller
  5. それはあなたが何をしようとしているものに依存し
0

、私は別のUIViewControllerの上にいくつかのUIを表示したい私は通常self.modalPresentationStyle = .overFullScreenでフルスクリーンのビューコントローラを使用します。それから私は実際にユーザーに見せたい目に見える大きさの別のビューを作成します。これにより、あなたが望むものを何でもできるようになります。

実際の子ビューコントローラが必要な場合は、appropriate functionsを使用する必要があります。

関連する問題