【问题标题】:The lovely yet evasive page-turn effect in UIPageViewControllerUIPageViewController 中可爱而又隐蔽的翻页效果
【发布时间】:2012-10-09 17:27:34
【问题描述】:

我正在使用 UIPageViewController 在 iPhone/iPad 应用程序中显示一些页面。现在,当用户按下按钮时,我想转到某个随机页面;这里重要的是我想向正在浏览“几个”页面的用户“展示”。我确实在 Stackoverflow 中查找了几个答案并尝试了它们。最好的也是唯一能够模拟的就是通过这个 sn-p 以编程方式翻“一页”(即用户看到单页翻页):

[self.pageViewController 
         setViewControllers:[NSArray arrayWithArray:array]  
   direction:UIPageViewControllerNavigationDirectionForward 
         animated:YES completion:nil];

现在,我想显示“几个”翻页;即说用户在第 2 页;然后当转到第 5 页时,目前它只显示一页,尽管第 2 页和第 5 页之间有“3”页。

我尝试引入具有周期性延迟的 NSTimer。计时器会转到一页,然后延迟,然后再转到另一页,然后延迟(重复,例如,3 次),以便用户获得“几页”翻页的“效果”。

[NSTimer scheduledTimerWithTimeInterval:0.2f target:self selector:@selector(goToRandomPage) userInfo:nil repeats:NO];

但这只会显示“最后”一页。也就是说,假设计时器被触发一次以显示第 8 页,然后延迟 0.2,然后显示第 3 页,然后延迟 0.2,然后显示第 6 页。实际显示的内容(即用户看到的内容)又是只翻了一页,即最后一页(翻到第 6 页)。

有人可以帮忙吗?

【问题讨论】:

    标签: iphone ios cocoa-touch


    【解决方案1】:

    一种选择是动态设置array 一次一页,在completion 块中,尝试调用相同的setViewControllers 方法。每次调用setViewControllers 时,都应修改array 对象以仅包含下一页。 Completion 块应确保当前动画已完成,您可以开始下一个动画。在 completion 块内添加一些条件检查来打破它,一旦它到达所需的页面。我还没有尝试过,但这应该会引导你走向正确的方向。

    [self.pageViewController 
             setViewControllers:[NSArray arrayWithArray:array]  
       direction:UIPageViewControllerNavigationDirectionForward 
             animated:YES completion:^{/* call the same method and modify array */}];
    

    【讨论】:

    • 听起来很有希望!让我试试然后回来!谢谢!
    • +1 我没有尝试,因为它变得太慢了。我放弃了这个想法。无论如何,感谢 ACB,您的建议!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多