2016-05-18 6 views
1

ich bin neu in der ios Programmierung und versuche einen segmentierten Controller zu einem scrollview hinzuzufügen, weil der seg controler zu groß für den Bildschirm ist, ohne dass die Bildlaufansicht horizontal scrollt. Ich bin mir nicht sicher, warum es nicht Scrollen ist. Ich denke, ich vermisse etwas Kleines, aber ich kann es nicht finden. alles hilft! Danke!Bildlauf nicht horizontal scrollen

meinen Code in der viewDidLoad:

scrollView.delegate = self 
scrollView.showsHorizontalScrollIndicator = true 
self.scrollView.alwaysBounceHorizontal = true 
self.scrollView.scrollEnabled = true 
self.scrollView.addSubview(segControl) 
self.scrollView.pagingEnabled = true 
self.scrollView.directionalLockEnabled = false 
self.scrollView.contentSize.height = segControl.frame.height 
self.scrollView.contentSize.width = segControl.frame.width 
+0

Was ist der Wert von 'segControl.frame.width'? Ist es größer als 'scrollView.frame.width'? – ozgur

+0

scrollView.contentSize sollte größer als scrollview.frame sein, um den Bildlauf zu ermöglichen. – Sumanth

+0

ja im 99% sicher ist es. wie kann ich das machen, wenn es nicht ist? oder wie kann ich überprüfen, ob es ist? – user3462448

Antwort

1

UIScrollView ist ziemlich einfach, mit zu arbeiten: so lange wie seine contentSize größer ist als seine eigene frame.size, wird es lassen Sie seine Subviews zu enthüllen blättern, die ausgeschaltet sind seine sichtbarer Bereich.

Überprüfen Sie wahrscheinlich die segControl.frame.width und die scrollView.frame.width Werte: die segControl 's Breite sollte größer sein für die Bildlaufansicht zu scrollen.

Es lohnt sich auch zu überprüfen, ob die scrollView.frame korrekt ist und nicht irgendwo außerhalb des Bildschirms liegt: z.B. scrollView.frame.origin.x + scrollView.frame.width ist kleiner als die Bildschirmbreite.

Blick auf den Screenshot, sollte die scrollView.contentSize.width über 320 (da es die gesamte Breite des Simulators Bildschirm, der ein iPhone 5/5S in Ihrem Fall ist) sein. Da Sie angegeben haben, dass Ihre Inhaltsbreite als 216 ausgegeben wird, sieht es so aus, als würden Sie auf die Frames im falschen Callback zugreifen, der ausgelöst wird, wenn die Werte noch nicht korrekt eingestellt sind. Ich kann den

scrollView.contentSize.height = segControl.frame.height 
scrollView.contentSize.width = segControl.frame.width 

Teil viewWillAppear() statt viewDidLoad() bewegen vorschlagen.

+0

ich tat, es ist größer. Ich habe es gedruckt, das kam im Debugbereich. scrollview frame width: 0.0 content size: 216.0 – user3462448

+0

Was ist mit dem 'scrollView.frame' - ist es ok und nicht zufällig auf dem Bildschirm? –

+0

Ich habe die Scrollview Trailing und Leading Constraints gleich der Superview. also denke ich nicht. – user3462448