Ios 如何使UIPageControl的背景色随页面滑动而改变?

Ios 如何使UIPageControl的背景色随页面滑动而改变?,ios,ios7,ios8,uipageviewcontroller,uipagecontrol,Ios,Ios7,Ios8,Uipageviewcontroller,Uipagecontrol,当我的应用程序第一次启动时,我有一个教程屏幕 我想有背景颜色的变化,因为用户从一页刷到另一页。我有这个工作,基本上,但页面控制的颜色是不会改变,直到刷转换完成 在这个屏幕截图中,我在第0页和第1页之间中间滚动以显示背景颜色的变化 如何更改页面滚动的背景颜色 以下是我的主视图控制器的代码-它在Rubymotion中,但您应该能够遵循它: # ... def page_control page_controller.view.pageControl end COLORS = [UIColor

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

我想有背景颜色的变化,因为用户从一页刷到另一页。我有这个工作,基本上,但页面控制的颜色是不会改变,直到刷转换完成

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

# ...

为什么不能将UIPageControl的backgroundColor设置为clearColor?

我也遇到了同样的问题-我最终实现了自己的UIPageControl。在主视图控制器中创建一个新视图,然后将UIPageViewController视图和UIPageControl添加为子视图,并将框架设置为页面控件显示在页面视图的底部或任何您喜欢的位置

编辑 由于UIPageViewController显示为另一个控制器的子视图,因此在将其添加为子视图之前,必须立即从主视图控制器[self addChildViewController:pageViewController]调用。然后调用[pageViewController didMoveToParentViewController:self]。这可确保触摸事件等从主视图控制器传递到页面视图控制器。看。 结束编辑

将页面控件的背景色设置为clearColor,从一个页面到下一个页面的转换将发生在页面控件后面。然后,您可以在pageViewController didFinishAnimating委托函数中更新页面控件currentPage,如有必要,还可以更新页面控件numberOfPages。如果希望能够点击页面控件切换页面,请在创建页面时添加合适的目标/操作方法,并使用UIPageViewController的SetViewController:animated:方法触发转换


要确保UIPageViewController不同时显示页面控件,请删除presentationCountForPageViewController:和PresentationIndexFormageViewController:的实现。

我尝试过-它从父控制器的视图继承背景色。页面视图与页面控件不重叠为什么不将页面视图与控制器视图的整个高度重叠?或者你已经尝试过了?这听起来很有希望-让我尝试一下,然后向你汇报:@Bodicious我意识到还有另外一个步骤我应该提到,关于添加一个视图控制器作为另一个视图的子视图-尽管你可能已经知道了。我将编辑我的答案。