我有一个带有 3 个屏幕的 UIPageViewController。我想在用户第一次打开应用程序时以编程方式向右滚动一点,以表明他能够左右滚动,并显示下一个屏幕的一部分。这可能吗?
我真正想做的是在第一次加载应用程序时实现“反弹”效果,但首先我需要知道是否可以滚动页面 View Controller 。
Best Answer-推荐答案 strong>
这实际上是可能的。
首先,您需要访问 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/
|