如何让UIPageControl的背景颜色随页面滑动一起变化?

时间:2014-10-16 09:53:01

标签: ios ios7 ios8 uipageviewcontroller uipagecontrol

首次启动我的应用时,我有一个教程屏幕

当用户在页面之间滑动时,我想要更改背景颜色。基本上,我有这个工作,但在滑动转换完成之前页面控件颜色不会改变。

UIPageViewController scrolling with background colour change

(在此屏幕截图中,我在第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

# ...

2 个答案:

答案 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:不提供网页控制,请移除UIPageViewControllerpresentationCountForPageViewController:的实施。