2017-12-14 3 views
0

Ich habe dieses Tutorial Snapchat Like Layout using View Controller Theme dann ich einen der drei Controller in Navigation Controller einbetten, aber es hat nicht funktioniert dann habe ich versucht, es auf dem View-Controller hinzuzufügen, wie hatte auch die Scroll-Ansicht mich nicht + funktionierte gibt Überlappung ich es nicht in Code tho versucht haben, aber ich glaube nicht, das die Ursache ist, ist dies der Codewie man einbetten in Navigationscontroller arbeiten mit scrollView

i hope this may help

class ViewController: UIViewController { 


    @IBOutlet weak var scrollView: UIScrollView! 
    override func viewDidLoad() { 
     super.viewDidLoad() 

     let V1 = self.storyboard?.instantiateViewController(withIdentifier: "V1") as UIViewController! 
     self.addChildViewController(V1!) 
     self.scrollView.addSubview((V1?.view)!) 
     V1?.didMove(toParentViewController: self) 
     V1?.view.frame = scrollView.bounds 

     let V2 = self.storyboard?.instantiateViewController(withIdentifier: "V2") as UIViewController! 
     self.addChildViewController(V2!) 
     self.scrollView.addSubview((V2?.view)!) 
     V2?.didMove(toParentViewController: self) 
     V2?.view.frame = scrollView.bounds 

     var V2Frame: CGRect = V2!.view.frame 
     V2Frame.origin.x = self.view.frame.width 
     V2?.view.frame = V2Frame 

     let V3 = self.storyboard?.instantiateViewController(withIdentifier: "V3") as UIViewController! 
     self.addChildViewController(V3!) 
     self.scrollView.addSubview((V3?.view)!) 
     V3?.didMove(toParentViewController: self) 
     V3?.view.frame = scrollView.bounds 

     var V3Frame: CGRect = V3!.view.frame 
     V3Frame.origin.x = 2 * self.view.frame.width 
     V3?.view.frame = V3Frame 

     self.scrollView.contentSize = CGSize(width: self.view.frame.width * 3, height: self.view.frame.height) 
     self.scrollView.contentOffset = CGPoint(x: self.view.frame.width * 1 , y: self.view.frame.height) 

    } 

wie der Code funktioniert? 1- zuerst Ich habe Bildlaufansicht zu einem View-Controller hinzugefügt 2- dann in der Bildlaufansicht Ich habe 3 View-Controller hinzugefügt und alle 3 Controller hat eigene Klasse wie normale Ansicht-Controller
3 - die Bildlaufansicht hinzugefügt die 3 Controller durch diesen Code auf seine Sicht auf den oberen alle 3-Controller aus eigener Klasse und alles erben ist wor fein wenn jemand kann mehr Beschreibung helfen oder einfach nur

fragen

Antwort

0
try below 


Create ViewController in Storyboard or XIB and add ScrollView and PageControl 

My Class as below: 


class ScrollContentViewController: UIViewController, UIScrollViewDelegate { 

    @IBOutlet weak var pageControl: UIPageControl! 
    @IBOutlet weak var scrollView: UIScrollView! 
    override func viewDidLoad() { 
     super.viewDidLoad() 

     // Do any additional setup after loading the view. 
    } 


    override func viewDidAppear(_ animated: Bool) { 
     super.viewDidAppear(animated) 
     self.pageControl.currentPage = 0 
     self.pageControl.numberOfPages = 4 
     var originX = CGFloat(0) 
     let width = scrollView.frame.size.width 
     let height = scrollView.bounds.size.height 
     for x in 0 ..< 4 { 
      let V1 = UIViewController() 
      self.scrollView.addSubview(V1.view) 
      V1.view.frame = CGRect(x: originX, y: 0, width: width, height: height) 
      V1.view.backgroundColor = x % 2 == 0 ? UIColor.lightGray : UIColor.darkGray 
      self.addChildViewController(V1) 
      originX += width 
     } 
     self.scrollView.contentSize = CGSize(width: originX, height: height) 
    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 

    func scrollViewDidEndDecelerating(_ scrollView: UIScrollView) { 
     let x = Int(scrollView.contentOffset.x/scrollView.frame.size.width) 
     self.pageControl.currentPage = x 
    } 

    /* 
    // MARK: - Navigation 

    // In a storyboard-based application, you will often want to do a little preparation before navigation 
    override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 
     // Get the new view controller using segue.destinationViewController. 
     // Pass the selected object to the new view controller. 
    } 
    */ 

} 
+0

Ihre Methode ist Arbeiten mit dem Navigationscontroller aber wie Ich gebe jeder Seite oder jedem View-Controller eine separate Kakao- Touch-Klasse, um damit in storyBoard zu arbeiten – mazenqp

Verwandte Themen