2016-11-30 5 views
0

Ich füge meine Intro-Bildschirme in einem scrollview.So muss ich horizontal nur scrollen.Ich habe Einschränkungen für scrollview (top, bottom.leading, trailing) festgelegt. Ich habe Teilansichten wie die hinzugefügt folgendescrollview autolayout Ausgabe xcode 8 mit Einschränkungen

for i in 0..<self.arrIntro.count{ 

       let view = IntroScreenView.instanceFromNib() 
       let x = CGFloat(i) * self.scrollIntro.frame.size.width 

       view.frame = CGRect(x: x, y: 0, width: self.scrollIntro.frame.size.width, height: self.scrollIntro.frame.size.height) 
       print(view,self.scrollIntro) 
       view.imgIntro.image = UIImage(named: "image-1")//UIImage(contentsOfFile: self.arrIntro[i]["Link"] as! String) 
       print(self.arrIntro[i]["Link"] as! String) 
       self.scrollIntro.addSubview(view) 
      } 
      self.scrollIntro.contentSize = CGSize(width: (CGFloat(self.arrIntro.count) * self.scrollIntro.frame.size.width) , height: self.scrollIntro.frame.size.height) 

aber meine scrollview ist vertikal wenig scrollen.Wie soll ich das vermeiden.Jedes automatische Layout Problem?

+1

Warum Sie kein 'UICollectionView' verwenden? – clemens

Antwort

0

Sie fügen Ihren Ansichten keine Einschränkungen hinzu. Fügen Sie jedem Element Beschränkungen für Höhe und Breite sowie Einschränkungen zwischen den Ansichten und Einschränkungen von den Ansichten der Bildlaufansicht hinzu. Beachten Sie, dass die Einschränkungen zwischen den Su-Ansichten und der Bildlaufansicht die Inhaltsgröße für Sie festlegen.

0

Die Scroll-Ansicht scrollt vertikal, wenn contentSize.height größer ist als die scrollView Höhe.

Stellen Sie nur sicher, dass Ihre contentSize.height nicht größer ist als die scrollView.frame.size.height.

Ein Grund, den ich erraten könnte ist, dass Sie contentSize einen Punkt einstellen, nach dem sich die Frames der Bildlaufansicht ändern. Sie sollten Sie in Content viewDidLayoutSubviews()

Probe bewegen Einstellung: Dieser Code macht vertikale Scroll-

class ViewController: UIViewController, UIScrollViewDelegate { 

    @IBOutlet var scrollView: UIScrollView! 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     scrollView.contentSize = CGSize(width: self.scrollView.bounds.width*5, height: self.scrollView.frame.height) 
    } 
} 

Und dies nicht

class ViewController: UIViewController, UIScrollViewDelegate { 

    @IBOutlet var scrollView: UIScrollView! 

    override func viewDidLayoutSubviews() { 
     scrollView.contentSize = CGSize(width: self.scrollView.bounds.width*5, height: self.scrollView.frame.height) 
    } 
} 
Verwandte Themen