2017-08-11 2 views
0

In diesem muss ich die Position der Lösch-Taste im Querformat ändern und dass, um es neben dem Stepper anzuzeigen kann mir jemand helfen, wie dies zu implementieren und hier ist das Bild dafür und im leeren Raum muss ich anzeigen die LöschtasteWie ändere ich die Tastenposition im Querformat in iOS?

enter image description here

+0

nehmen Sie 'contrisnts' Steckdose, die Sie ändern möchten, dann aktualisieren Sie es, wenn die Ausrichtung Querformat ist –

+0

, aber wie Sie führen für Stepper mit Einschränkungen outlet? @AnuragSharma –

+0

Setzen Sie einfach die "Trailing" –

Antwort

2

Vorausgesetzt, dass Sie bereits Orientierung Handhabung sind und Sie erhalten Ereignisse richtig ich es am besten finden, wenn Sie doppelte Zwänge schaffen und ihre Priorität manipulieren.

Im Storyboard platzieren Sie die Schaltfläche auf einer der Positionen und fügen Sie alle dafür notwendigen Bedingungen hinzu. Setze alle Prioritäten auf 900 (erkläre später, warum nicht 1000) und bestätige, dass das Layout OK ist.

Setzen Sie jetzt diese Einschränkungsprioritäten auf 100 und beginnen Sie, Einschränkungen für die anderen Layouts hinzuzufügen. Setzen Sie diese Beschränkungsprioritäten auf 900 und bestätigen Sie, dass das Layout auch für dieses Szenario funktioniert.

An diesem Punkt müssten Sie die Prioritäten eines Satzes auf 900 und andere auf 100 ändern, um den Modus zu wechseln. Also jetzt in Codierung gehen ...

Sie werden für diese Einschränkungen Ausgänge benötigen, die schmerzhaft sein werden, alle von ihnen zu ziehen, benennen Sie sie und fügen Sie dann die Priorität für jeden ändern. Aber zum Glück können Sie Arrays für diese verwenden, um den in Ihrem Code folgend hinzu:

@IBOutlet var portraitConstraints: [NSLayoutConstraint]? 
@IBOutlet var landscapeConstraints: [NSLayoutConstraint]? 

nun einfach alle Bedingungen in diesen 2-Arrays als Steckdosen ziehen.

Der Rest ist ziemlich geradlinig. Etwas wie:

func setMode(mode: LayoutMode, animated: Bool) { 
    switch mode { 
    case .portrait: 
     portraitConstraints?.forEach { $0.priority = 900 } 
     landscapeConstraints?.forEach { $0.priority = 100 } 
    case .landscape: 
     portraitConstraints?.forEach { $0.priority = 100 } 
     landscapeConstraints?.forEach { $0.priority = 900 } 
    } 
    UIView.animate(withDuration: animated ? 0.3 : 0.0) { 
     self.view.layoutIfNeeded() 
    } 
} 

Über keine Einschränkung Priorität bis 1000 einstellen:

Es ist nicht erlaubt, die Priorität einer Einschränkung zu ändern, die eine Priorität auf 1000 gesetzt hat, Sie wissen nicht, warum, egal warum.

EDIT: Dies scheint unklar zu sein, ich Ihnen ein Beispiel aus Ihrem Fall so lassen geben:

Angenommen, Sie eine Ansicht, die „Mobile“, „1“, „20.00KD“, „hält -/+ "inputContainer aufgerufen, eine Löschtaste deleteButton und Bildansicht auf der linken Seite genannt imageView.

  • inputContainer.top = superView.top + t
  • inputContainer.leading = imageView.trailing + a
  • deleteButton.leading = inputContainer.leading
  • deleteButton.top = inputContainer.bottom + b
  • deleteButton.bottom = superView.bottom - t
:

Nun ist die Portrait-Modus würden Sie die Einschränkungen nach 210

Dann in Landschaft würden Sie haben:

  • inputContainer.center.y = superView.center.y
  • inputContainer.leading = imageView.trailing + a
  • deleteButton.center.y = switchView.center.y
  • deleteButton.leading = inputContainer.trailing + b

nun eine dieser auf Priorität von 900 und andere zu 100 in Storyboard. Verbinden Sie dann alle diese Einschränkungen in entsprechenden Arrays in Ihrem Code. Das ist es.

+0

wie zu Einschränkungen für andere Layout (z. B. 100), dass ich dich nicht bekommen, was du sagst? @Matic Oblak –

+0

Angenommen, Sie hätten zwei Bildschirme im Storyboard. Eines hat ein Layout für den Hochformatmodus und das andere für den Querformatmodus. Jetzt hätte diese Schaltfläche einige Einschränkungen im Hochformat, wo sie unten ist, und einige Einschränkungen in der Landschaft, die rechts angezeigt werden. In Ihrem Fall fügen Sie alle diese Einschränkungen hinzu; für den Hoch- und Querformatmodus auf demselben Element, die gleiche Schaltfläche. Aber Sie setzen eine Beschränkung auf die Priorität 100 und andere auf 900. Dann werden diejenigen mit höherer Priorität wirksam, die Sie dann im Code manipulieren. –

+0

wie man 2 Story Boards mit einer Orientierungsänderung (d. H. Hoch- und Querformat) platziert Ich weiß nicht wie ich neu zu Swift 3 war Erklären Sie das bitte klar? –

Verwandte Themen