首次启动我的应用时,我有一个教程屏幕
当用户在页面之间滑动时,我想要更改背景颜色。基本上,我有这个工作,但在滑动转换完成之前页面控件颜色不会改变。
(在此屏幕截图中,我在第0页和第1页之间滚动以显示背景颜色变化)
如何在页面滚动时更改背景颜色?
这是我的主视图控制器中的代码 - 它在Rubymotion中,但您应该能够遵循它:
# ...
def page_control
page_controller.view.pageControl
end
COLORS = [UIColor.greenColor, UIColor.blueColor, UIColor.orangeColor]
def pageViewController(page_view_controller, didFinishAnimating: finished, previousViewControllers: previous_view_controllers, transitionCompleted: completed)
background_color = COLORS[page_control.currentPage % COLORS.size]
page_control.backgroundColor = background_color
end
# ...
答案 0 :(得分:0)
为什么你不能只设置UIPageControl背景颜色来清除颜色?
答案 1 :(得分:0)
我遇到了同样的问题 - 我最终实现了自己的UIPageControl
。在主视图控制器中创建一个新视图,然后将UIPageViewController
视图和UIPageControl
添加为子视图,并设置框架,以便页面控件显示在底部(或您喜欢的任何位置) pageViewController视图。
修改强>
由于UIPageViewController
显示为另一个控制器的子视图,因此您必须在将其添加为子视图之前立即调用(从主视图控制器)[self addChildViewController:pageViewController]
。然后致电[pageViewController didMoveToParentViewController:self]
。这确保了触摸事件等从主视图控制器传递到页面视图控制器。请参阅Apple Docs。
结束编辑
将页面控件的背景颜色设置为clearColor
,并且页面控件“后面”将发生从一页到下一页的转换。然后,您可以在currentPage
委托功能中更新页面控件(numberOfPages
,并在必要时更新pageViewController didFinishAnimating
)。如果您希望能够点击页面控件来切换页面,请在创建时添加合适的目标/操作方法,并使用UIPageViewController
的{{1}}方法来触发转换。
要确保setViewControllers:animated:
不提供网页控制,请移除UIPageViewController
和presentationCountForPageViewController:
的实施。