2017-10-20 3 views
0

私は上部にNavigationBarがあり、UIViewControllerをRootViewControllerとして追加したアプリケーションに取り組んでいます。UIViewControllerはUINavigationControllerの背後に隠れていますが、下に配置する必要があります

私の計画は、このUIViewControllerに新しいSubviewを追加することでした。新しいSubviewもUIViewControllerの拡張されました。私はUIViewControllerにコントローラのビュー(グレーのRect)を追加しましたが、NavigationBarの後ろに配置されています。私はそれを望んでいません..解決策を探して面白いものを見つけました。: UIViewControllerにUIView()(緑のRect)を追加すると、ビューの配置は完全に機能します他のUIViewControllerビューから参照してください。 enter image description here 私のコードは次のようになります。

class DashboardController: UIViewController { 

var ccview:ContactCircleController! 

override func viewDidLoad() { 
    super.viewDidLoad() 
    edgesForExtendedLayout = [] 
    self.view.backgroundColor = .white 

    let test = UIView() 
    test.backgroundColor = .green 
    test.frame = CGRect(x: self.view.frame.width - 200, y: 0, width: self.view.frame.width/2, height: self.view.frame.width/2) 
    self.view.addSubview(test) 
    setup() 
} 

func setup(){ 
    ccview = ContactCircleController() 

    ccview.view.frame = CGRect(x: 0, y: 0, width: self.view.frame.width/2, height: self.view.frame.width/2) 
    ccview.edgesForExtendedLayout = UIRectEdge.top 
    self.view.addSubview(ccview.view) 
}} 

私はすでに「拡張エッジ」をチェックしました - ストーリーボード上のnavigationcontrollerのトグルを。また、edgesForExtendedLayout = []をUIViewControllerに追加し、UIViewのためにうまくいきました。しかし、別のUIViewControllerのビューのため...それは働かなかった。

ありがとうございました!

答えて

0

[デバッグビュー階層を使用している場合、あなたは灰色ccview.viewナビゲーションバーの背後にあるではなく、むしろそれはself.view.frame.width/2の高さを保っていないことがわかります。ストーリーボードなしでインスタンス化さUIViewController.viewデフォルト.autoresizingMask = [.flexibleWidth, .flexibleHeight]を有しているのに対し、ストーリーボードからインスタンスUIViewController.viewは、デフォルトで.autoresizingMask = []を有するため

です。

func setup(){ 
    ccview = ContactCircleController() 

    ccview.view.frame = CGRect(x: 0, y: 0, width: self.view.frame.width/2, height: self.view.frame.width/2) 

    // remove this line 
    //ccview.edgesForExtendedLayout = UIRectEdge.top 

    // add this line 
    ccview.view.autoresizingMask = [] 

    self.view.addSubview(ccview.view) 
} 

あなたはへsetup()を変更することでこの問題を修正することができます

関連する問題