2016-08-01 6 views
1

Ich habe eine iMessage-Erweiterung und habe Probleme beim Ändern von Präsentationsstilen. Wenn ich die App zum ersten Mal öffne ist das was ich bekomme: enter image description here So soll es sein. Jetzt, wenn ich zum erweiterten Präsentationsstil wechsele, ist das, was ich bekomme: enter image description here Das ist auch was ich will. Allerdings, wenn ich wieder zu kompakt schalten, geschieht dies: enter image description here Hier ist mein Code:Warum wird meine Ansicht beim Ändern von Präsentationsstilen verschoben?

override func didTransition(to presentationStyle: MSMessagesAppPresentationStyle) { 
    super.didTransition(to: presentationStyle) 
    presentSearchStickersView() 
} 
private func presentSearchStickersView() { 
    let controller = (storyboard?.instantiateViewController(withIdentifier: "SearchStickersViewController"))! as! SearchStickersViewController 
    controller.view.backgroundColor = #colorLiteral(red: 1, green: 1, blue: 1, alpha: 1) 
    controller.searchDelegate = self 
    for child in childViewControllers { 
     child.willMove(toParentViewController: nil) 
     child.view.removeFromSuperview() 
     child.removeFromParentViewController() 
    } 
    self.addChildViewController(controller) 
    self.view.addSubview(controller.view) 
} 

Und hier ist ein Screenshot meiner Top-Einschränkung: enter image description here

Antwort

0

In meiner Sicht sollte man nicht Reinstanziierung die Leiste jedes Mal, wenn Sie in den Kompakt- oder Erweiterungsmodus wechseln. Sie sollten es einmal instanziieren und anschließend die Beschränkungen an den Anfang der Ansicht setzen. Ich habe auf diese Weise versucht, und es funktioniert gut;)

So zusammenzufassen, wenn Sie das Storyboard

  1. In Ihrem Storyboard Ihre Subview an den Controller
  2. Stellen Sie eine Top-Einschränkung hinzufügen verwenden, Breite gleich Super und centerX
  3. im Code Ihre Suchleiste festgelegt in viewDidLoad zu Superview (delegieren etc)

Wenn Sie nicht mit Storyboard werden.

  1. Ihre xib laden, und fügen Sie Ihre Subview (vielleicht in der didBecomeActive oder so ähnlich)
  2. Vergessen Sie nicht die translatesAutoresizingMaskIntoConstraints auf false
  3. die gleichen Einschränkungen hinzufügen zu setzen, wie oben
+0

Ich tat das, aber in erweitert der obere Teil meiner Ansicht wurde hinter der Navigationsleiste versteckt. Deshalb habe ich den View Controller –

+0

dargestellt. Haben Sie die "Top Layout Guide" Einschränkung verwendet? – RomOne

+0

Ja, ich habe 'Top Layout Guide' verwendet. Ich füge einen Screenshot hinzu –

0

Wie RomOne sagte, sollten Sie es einmal dort hinstellen. Style-Schalter sollten durch Constraints gehandhabt werden

Verwandte Themen