2017-03-21 5 views
1

Problem Zustand: Ich habe zwei ViewcontrollerPräsens kleine Viewcontroller

  1. parent (375 * 667)
  2. childViewController (300 * 667)

und ich möchte childViewController bei Axis präsentieren (75 * 0), wie unten

enter image description here gezeigt

childViewController ist Show auf dieser IBAction

@IBAction func btnShowVC(_ sender: UIButton) { 
    let storyboard = UIStoryboard(name: "Main", bundle: nil) 
    let newVC = storyboard.instantiateViewController(withIdentifier: "cvc") as? childViewController 
    self.present(newVC!, animated: true, completion: nil) 
} 

Aber es streckt sich wie

enter image description here

kann jemand mir helfen, es zu lösen? Dank

+0

Ich denke einfach subview verwenden wäre besser, wenn Sie Viewcontroller verwenden möchten, dann versuchen Sie vielleicht für popover Präsentation suchen – Tj3n

Antwort

1

image here Sie auf diese Weise versuchen.

let storyboard = UIStoryboard(name: "Main", bundle: nil) 
     let newVC = storyboard.instantiateViewController(withIdentifier: "ChildViewController") as? ChildViewController 
      view.addSubview((newVC?.view)!) 
     newVC?.view.frame = CGRect(x:75,y:0,width:view.frame.size.width-75,height:view.frame.size.height) 
     newVC?.view.autoresizingMask = \[.flexibleWidth, .flexibleHeight\] 


     newVC?.didMove(toParentViewController: self) 
+0

Wenn Sie den Kindercontroller hinzufügen möchten, tippen Sie auf die untergeordnete Schaltfläche. –

+0

Danke Mann. Wirklich zu schätzen Ihre Unterstützung –

+1

Die Idee ist corect, aber der Code ist nicht. Sie verpassen den addChildViewController-Aufruf. – Sulthan

0

von preferredContentSize-Eigenschaft wird Ihr Problem lösen, bitte versuchen Sie unter Code-Schnipsel aus

newVC?.preferredContentSize = CGSize(width: 300, height: 667) 
+0

Ich habe versucht, seine immer noch nicht funktioniert. –

1

Wo Sie den Rahmen Ihres Viewcontroller einstellen? Wenn Sie das automatische Layout verwenden, müssen Sie Einschränkungen festlegen, damit der ViewController so aussieht, wie Sie es möchten. Wenn Sie es tun wollen programmatisch können Sie den Rahmen gesetzt irgendwo zum Beispiel in dem Code, den Sie auf dem Laufenden über Sie dies tun könnte:

@IBAction func btnShowVC(_ sender: UIButton) { 
    let storyboard = UIStoryboard(name: "Main", bundle: nil) 
    let newVC = storyboard.instantiateViewController(withIdentifier: "cvc") as? childViewController 
    newVc.view.frame = CGRect(x: 75, y: 0, width: 300, height: 667) 
    self.present(newVC!, animated: true, completion: nil) 
} 
+0

Es gibt diesen Fehler: Wert des Typs 'ChildViewController?' hat kein Mitglied 'frame' –

+1

Sorry, ich habe meine Antwort bearbeitet, ich habe vergessen, Ansicht in den Anruf hinzuzufügen. – monolith