首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >以编程方式进行的UIPageViewController中间转换?

以编程方式进行的UIPageViewController中间转换?
EN

Stack Overflow用户
提问于 2015-05-07 21:49:18
回答 3查看 2.8K关注 0票数 4

我有一个带有n (n>>2)页的n>>2。第一页是黄色的,第二页是蓝色的。当我从一个页面拖到另一个页面时,我得到了一个很好的中间状态动画,如下所示:

我试图以编程的方式将页面从一个页面转换到另一个页面。我得到的UIScrollView是:

代码语言:javascript
代码运行次数:0
运行
复制
for view:UIView in self.view.subviews as! [UIView] {
  if view.isKindOfClass(UIScrollView.self) {
    self.pageScrollView = view as? UIScrollView
  }
}

I设置滚动位置如下:

代码语言:javascript
代码运行次数:0
运行
复制
self.pageScrollView!.contentOffset.x = screenWidth - deltaX

结果如下:

滚动位置被更新,但下一个视图未加载。这就是为什么在正确的地点有一个白色的区域。我知道我可以用setViewControllers设置下一页,但这将显示整个下一页。我在这里想要的是以编程的方式展示下一页,就像我在拖动时所做的那样。

我知道这是可以做到的,因为Tinder应用程序已经在这么做了。当您在页眉上做一个pan手势时,页面视图控制器会非常少地切换页面。

如何以编程方式模拟页面中间转换?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-05-11 02:47:35

在传呼的事情上你不能半途而废。只要拖动手势是活动的,就有可能,但是一旦您举起手指并停止该手势,该控件将显示下一个UIViewController或已经显示的那个。

setViewControllersanimated:true结合使用将平稳地从当前的UIViewController过渡到下一个UIViewController,就好像您已经将视图与手指一起拖动一样:

代码语言:javascript
代码运行次数:0
运行
复制
.setViewControllers([allViewControllers[1]], direction: .Forward, animated: true, completion: nil)

如果您需要更自定义的内容,则可能需要使用UIScrollView而不是UIPageViewController,并自行设置内容。将pagingEnabled设置为true将使其行为像带有Scroll转换的UIPageViewController,但也可以禁用分页,并使用setContentOffset:(contentOffset, animated)的组合使其滚动到您喜欢的位置,委托scrollViewWillEndDragging:(scrollView, withVelocity, targetContentOffset)使其成为“页面”。

我创建了一个这里的代码示例来说明我的意思。它是一个简单的UIScrollView,它模仿一个UIPageViewController,具有基本的视图分配/去分配,以及一种以编程方式滚动一半的方法。

票数 2
EN

Stack Overflow用户

发布于 2015-07-17 12:04:45

基本上,你所需要写的就是:

代码语言:javascript
代码运行次数:0
运行
复制
pageViewController.setViewControllers([yourVC()], direction: UIPageViewControllerNavigationDirection.Forward, animated: true, completion: nil)

这里有一个很好的教程:

https://www.youtube.com/watch?v=8bltsDG2ENQ

票数 1
EN

Stack Overflow用户

发布于 2015-05-13 12:10:20

我有同样的问题,并通过设置一个viewController来进行转换来解决这个问题。

就像在objective-c

代码语言:javascript
代码运行次数:0
运行
复制
[self.pageControl setViewControllers:@[[self.viewControllers objectAtIndex:selectedPageIndex]] direction:UIPageViewControllerNavigationDirectionForward animated:YES completion:^(BOOL finished) {

    }];
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30112277

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档