2016-10-15 2 views
0

Ich bin neu Subviews zu verwenden, aber aus bestimmten Gründen hinzufügen Einschränkungen scrollView zeigen nicht die Unteransicht. Es funktioniert nur, wenn .frame verwendet wird. Bitte sehen Sie sich meinen Code an und lassen Sie es mich wissen.

Vielen Dank.Swift hinzufügen Einschränkungen zu UIScrollView Subviews

let scrollView = UIScrollView() 
let myView = UIImageView() 

override func viewDidLoad() { 

    view.addSubview(scrollView) 
    scrollView.backgroundColor = .red 
    scrollView.translatesAutoresizingMaskIntoConstraints = false 
    scrollView.leftAnchor.constraint(equalTo: view.leftAnchor, constant: 0).isActive = true 
    scrollView.rightAnchor.constraint(equalTo: view.rightAnchor, constant: 0).isActive = true 
    scrollView.topAnchor.constraint(equalTo: view.topAnchor, constant: 0).isActive = true 
    scrollView.bottomAnchor.constraint(equalTo: view.bottomAnchor, constant: 0).isActive = true 

    scrollView.addSubview(myView) 
    myView.backgroundColor = .brown 
    myView.translatesAutoresizingMaskIntoConstraints = false 
    myView.leftAnchor.constraint(equalTo: scrollView.leftAnchor, constant: 0).isActive = true 
    myView.rightAnchor.constraint(equalTo: scrollView.rightAnchor, constant: 0).isActive = true 
    myView.topAnchor.constraint(equalTo: scrollView.topAnchor, constant: 0).isActive = true 
    myView.bottomAnchor.constraint(equalTo: scrollView.bottomAnchor, constant: 0).isActive = true 
} 
+0

Wenn Sie die 'UIImageView' zu einem einfachen' UIView', ändert sich es zeigt sich? – NRitH

+0

alle Ansichten verhalten sich gleich. Der Weg herum ist Topanker in der ScrollView zu haben und haben und verlassen haben, rechts Anker zu "view" das ist komisch, dass es sich so verhalten oder warum sollte es aber wieder Apple schieben zu viele Buggy-Apps. – pprevalon

Antwort

0

Diese UIScrollView wegen der Art und Weise auftritt, ist in Beziehung zu seinen Eltern und Kindern so bemessen, wenn automatischen Layout verwenden.

Der erste Satz von Constraints (zwischen dem Scrollview und seinem Parent) stellt sicher, dass der Rahmen des Scrollview an die Kanten der Root-Ansicht angeheftet ist.

Der zweite Satz von Constraints (zwischen scrollview und seinem Kind) stellt lediglich sicher, dass die Inhaltsgröße des scrollview gleich der Größe der Unteransicht ist. Im Wesentlichen führt diese Einschränkung dazu, dass die Inhaltsgröße der Bildlaufansicht geändert wird und nicht der Rahmen der Teilansicht. Die Subview ist leer und hat keinen Inhalt so seine Größe ist 0. Dieser Inhalt Größe des Scrollview macht 0.

print(scrollView.frame) 
(0.0, 0.0, 414.0, 736.0) 
print(scrollView.bounds) 
(0.0, 0.0, 414.0, 736.0) 
print(scrollView.contentSize) 
(0.0, 0.0) 
print(myView.frame) 
(0.0, 0.0, 0.0, 0.0) 

Dieses Verhalten ein wenig in diesen technical note erklärt.

Wenn das, was Sie wirklich für das Kind Ansicht wollen, ist der gesamte Rahmen des Scroll zu füllen, können Sie das explizit tun:

myView.heightAnchor.constraint(equalTo: scrollView.heightAnchor).isActive = true 
myView.widthAnchor.constraint(equalTo: scrollView.widthAnchor).isActive = true 
Verwandte Themen