iOS

当前位置:首页 > iOS

ios – 禁用UIPageViewController弹跳 – Swift [复制] - iOS

参见英文答案 > Disable UIPageViewController bounce8个 我一直在制作一个在UIViewControllers之间滚动的示例应用程序,但重点是我想在滚动结束时和返回第一个UIView...
参见英文答案 > Disable UIPageViewController bounce8个
我一直在制作一个在UIViewControllers之间滚动的示例应用程序,但重点是我想在滚动结束时和返回第一个UIViewController时禁用弹跳效果.

这是我的代码:

class PageViewController: UIPageViewController,UIPageViewControllerDataSource,UIPageViewControllerDelegate{    var index = 0    var identifiers: NSArray = ["FirstNavigationController","SecondNavigationController"]    override func viewDidLoad() {        self.dataSource = self        self.delegate = self        let startingViewController = self.viewControllerAtIndex(self.index)        let viewControllers: NSArray = [startingViewController]        self.setViewControllers(viewControllers as [AnyObject],direction: UIPageViewControllerNavigationDirection.Forward,animated: false,completion: nil)    }    func viewControllerAtIndex(index: Int) -> UINavigationController! {        let storyBoard : UIStoryboard = UIStoryboard(name: "Main",bundle:nil)        //first view controller = firstViewControllers navigation controller        if index == 0 {            return storyBoard.instantiateViewControllerWithIdentifier("FirstNavigationController") as! UINavigationController        }        //second view controller = secondViewController's navigation controller        if index == 1 {            return storyBoard.instantiateViewControllerWithIdentifier("SecondNavigationController") as! UINavigationController        }        return nil    }    func pageViewController(pageViewController: UIPageViewController,viewControllerAfterViewController viewController: UIViewController) -> UIViewController? {        let identifier = viewController.restorationIdentifier        let index = self.identifiers.indexOfObject(identifier!)        //if the index is the end of the array,return nil since we dont want a view controller after the last one        if index == identifiers.count - 1 {            return nil        }        //increment the index to get the viewController after the current index        self.index = self.index + 1        return self.viewControllerAtIndex(self.index)    }    func pageViewController(pageViewController: UIPageViewController,viewControllerBeforeViewController viewController: UIViewController) -> UIViewController? {        let identifier = viewController.restorationIdentifier        let index = self.identifiers.indexOfObject(identifier!)        //if the index is 0,return nil since we dont want a view controller before the first one        if index == 0 {            return nil        }        //decrement the index to get the viewController before the current one        self.index = self.index - 1        return self.viewControllerAtIndex(self.index)    }}

看看这里:

解决方法

我不知道你能不能. UIPageController不是很容易定制的.

就个人而言,当我想在UIViewController之间滚动时,我更喜欢使用一个简单的UIViewController,它将是一个容器,里面有一个UIScrollView.然后我以编程方式添加UIScrollView的contentSize中的所有控制器.您必须将所有控制器添加为容器的子级.

更新iOS 9

func setupDetailViewControllers() {    var previousController: UIViewController?    for controller in self.controllers {        addChildViewController(controller)        addControllerInContentView(controller,previousController: previousController)        controller.didMoveToParentViewController(self)        previousController = controller    }}func addControllerInContentView(controller: UIViewController,previousController: UIViewController?) {    contentView.addSubview(controller.view)    controller.view.translatesAutoresizingMaskIntoConstraints = false    // top    controller.view.topAnchor.constraintEqualToAnchor(contentView.topAnchor).active = true    // bottom    controller.view.bottomAnchor.constraintEqualToAnchor(contentView.bottomAnchor).active = true    // trailing    trailingContentViewConstraint?.active = false    trailingContentViewConstraint = controller.view.trailingAnchor.constraintEqualToAnchor(contentView.trailingAnchor)    trailingContentViewConstraint?.active = true    // leading    let leadingAnchor = previousController?.view.trailingAnchor ?? contentView.leadingAnchor    controller.view.leadingAnchor.constraintEqualToAnchor(leadingAnchor).active = true    // width    controller.view.widthAnchor.constraintEqualToAnchor(scrollView.widthAnchor).active = true}

以前的答案

像这样:

scrollView是一个IBOutlet,与ContainerViewController的每个边缘都有约束

class ContainerViewController: UIViewController {@IBOutlet var scrollView: UIScrollView!override func viewDidLoad() {    super.viewDidLoad()    scrollView.bounces = false    scrollView.pagingEnabled = true}override func didReceiveMemoryWarning() {    super.didReceiveMemoryWarning()}override func viewDidLayoutSubviews() {    initScrollView()}func initScrollView(){    let viewController1 = storyboard?.instantiateViewControllerWithIdentifier("ViewController1") as! ViewController1    viewController1.willMoveToParentViewController(self)    viewController1.view.frame = scrollView.bounds    let viewController2 = storyboard?.instantiateViewControllerWithIdentifier("ViewController2") as! ViewController2    viewController2.willMoveToParentViewController(self)    viewController2.view.frame.size = scrollView.frame.size    viewController2.view.frame.origin = CGPoint(x: view.frame.width,y: 0)    scrollView.contentSize = CGSize(width: 2 * scrollView.frame.width,height: scrollView.frame.height)    scrollView.addSubview(viewController2.view)    self.addChildViewController(viewController2)    viewController2.didMoveToParentViewController(self)    scrollView.addSubview(viewController1.view)    self.addChildViewController(viewController1)    viewController1.didMoveToParentViewController(self)}}

以上是来客网为你收集整理的ios – 禁用UIPageViewController弹跳 – Swift [复制]全部内容,希望文章能够帮你解决ios – 禁用UIPageViewController弹跳 – Swift [复制]所遇到的程序开发问题。

如果觉得来客网网站内容还不错,欢迎将来客网网站推荐给程序员好友。

上一篇:iOS cocoapods – 如何添加libsqlite3.dylib

下一篇:已经是最后一篇

相关内容

文章评论

表情

共 0 条评论,查看全部
  • 这篇文章还没有收到评论,赶紧来抢沙发吧~

评论排行榜

热门标签