• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

ios - 仅以编程方式滚动 UIPageViewController 一点点

[复制链接]
菜鸟教程小白 发表于 2022-12-13 10:19:22 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我有一个带有 3 个屏幕的 UIPageViewController。我想在用户第一次打开应用程序时以编程方式向右滚动一点,以表明他能够左右滚动,并显示下一个屏幕的一部分。这可能吗?

我真正想做的是在第一次加载应用程序时实现“反弹”效果,但首先我需要知道是否可以滚动页面 View Controller 。



Best Answer-推荐答案


这实际上是可能的。

首先,您需要访问 UIPageViewController ScrollView 。在您的页面 View Controller 子类中:

var scrollView: UIScrollView?

override func viewDidLoad() {
    super.viewDidLoad()

    self.setupScrollView()
}

private func setupScrollView() {
    for view in self.view.subviews{
        if let scrollView = view as? UIScrollView {
            self.scrollView = scrollView
            self.scrollView?.delegate = self // if needed
        }
    }
}

当您准备好显示滚动提示时,调整 ScrollView 的内容偏移量。请记住,您的初始滚动偏移量可能不为零。即使你在第一页,也有前页和后页的概念。就我而言,我的初始偏移量是屏幕的宽度。这是一个滚动提示示例:

self.view.userInteractionEnabled = false         

UIView.animateWithDuration(0.3,
    animations: { () -> Void in

        if let pvc = self.pageViewController as? HomePageViewController {
            if let currentXOffset: CGFloat = pvc.scrollView?.contentOffset.x {
                pvc.scrollView?.setContentOffset(CGPointMake(currentXOffset + 40, 0), animated: false)
            }
        }
}, completion: { (finished) in

    UIView.animateWithDuration(0.5,
        delay: 0.3,
        usingSpringWithDamping: 0.3,
        initialSpringVelocity: 0.6,
        options: .allZeros,
        animations: { () -> Void in

            if let pvc = self.pageViewController as? HomePageViewController {
                if let currentXOffset: CGFloat = pvc.scrollView?.contentOffset.x {
                    pvc.scrollView?.setContentOffset(CGPointMake(currentXOffset - 40, 0), animated: false)
                }
            }
     }, completion: { (finished) -> Void in
         self.view.userInteractionEnabled = true
     })

关于ios - 仅以编程方式滚动 UIPageViewController 一点点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28662446/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap