Suche…


Eine komplexe StackView in Scrollview Example

Es folgt ein Beispiel dafür, was mit verschachtelten StackViews möglich ist, und vermittelt dem Benutzer den Eindruck eines kontinuierlichen Bildlaufs, bei dem komplexe Benutzeroberflächenelemente oder -ausrichtungen verwendet werden.

Eine komplexe StackView in Scrollview Example

Mehrdeutiges Layout vermeiden

Eine häufige Frage zu StackViews innerhalb von Scrollviews stammt aus mehrdeutigen / heigh-Warnungen im Interface Builder. Wie diese Antwort erklärt hat, ist es notwendig:

  1. Fügen Sie in der UIScrollView eine UIView (die contentScrollView) hinzu.
  2. Setzen Sie in dieser contentScrollView den oberen, unteren, linken und rechten Rand auf 0
  3. Richten Sie das Zentrum auch horizontal und vertikal aus.

In verschachtelten StackViews zum Inhalt blättern

Das große Problem beim Scrollen besteht darin, den Versatz zu bestimmen, der erforderlich ist, um ein Textfeld in einer StackView darzustellen, das sich in der ScrollView befindet .

Wenn Sie versuchen, die Position von Textfield.frame.minY kann dies 0 sein , da der minY-Frame nur den Abstand zwischen dem Element und der Oberseite der StackView berücksichtigt. Sie müssen also alle anderen übergeordneten Stackviews / Views betrachten.

Eine gute Lösung für dieses Problem ist:

1 - Implementieren Sie die ScrollView-Erweiterung

extension UIScrollView {

    func scrollToShowView(view: UIView){
        var offset = view.frame.minY
        var superview = view.superview
        while((superview  != nil)){
            offset += (superview?.frame.minY)!
            superview = superview?.superview
        }
        
        offset -= 100 //optional margin added on offset
        
        self.contentOffset = CGPoint.init(x: 0, y: offset)
    }

}

Dies berücksichtigt alle übergeordneten Ansichten und summiert den erforderlichen Versatz für die Bildlaufansicht, um die erforderliche Ansicht auf dem Bildschirm darzustellen (z. B. ein Textfeld, das nicht hinter der Benutzertastatur bleiben kann).

Anwendungsbeispiel:

func textViewDidBeginEditing(_ textView: UITextView) {
    self.contentScrollView.scrollToShowView(view: textView)
}


Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow