【问题标题】:how to make embed in navigation controller work with scrollView如何使嵌入导航控制器与滚动视图一起使用
【发布时间】:2018-05-28 15:24:36
【问题描述】:

我看过这个教程 Snapchat Like Layout using View Controller Theme 然后我在导航控制器中嵌入了三个控制器之一,但它不起作用然后我试图将它添加到视图控制器上滚动视图如何也不起作用+给我重叠我没有在代码中尝试过但是我不认为这是原因,这是代码

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)

    }

代码是如何工作的?? 1-首先我将滚动视图添加到视图控制器 2- 然后在滚动视图中我添加了 3 个视图控制器,所有 3 个控制器都有自己的类,如普通视图控制器
3-滚动视图通过顶部的此代码在其视图中添加了 3 个控制器 所有 3 个控制器都继承自自己的类,一切正常 如果有人可以提供帮助或需要更多描述,请询问

【问题讨论】:

    标签: ios swift uiscrollview uinavigationcontroller overlap


    【解决方案1】:
    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.
        }
        */
    
    }
    

    【讨论】:

    • 您的方法适用于导航控制器,但我如何为每个页面或视图控制器提供一个单独的可可触摸类以在 storyBoard 中使用它
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-07
    相关资源
    最近更新 更多