2014-10-16 53 views
1

当我的应用第一次启动时,我有一个教程屏幕如何将UIPageControl的背景颜色随页面刷卡一起更改?

我想随着用户在页面之间滑动而改变背景颜色。基本上,我有这个工作,但页面控制颜色不会改变,直到滑动转换完成。

UIPageViewController scrolling with background colour change

(在这个屏幕截图,我滚动页面0和页面之间的中点,以显示背景颜色变化)

我怎么能与背景颜色变化页面滚动?

下面是从我的主视图控制器的代码 - 这是在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

为什么你就不能设置UIPageControl的的backgroundColor至clearColor?

+0

我试过了 - 它从父控制器的视图中继承了背景颜色。页面视图不与页面控件重叠 – bodacious 2014-10-16 10:35:18

+0

为什么不将页面视图重叠到控制器视图的整个高度?或者你已经尝试过? – believesInSanta 2014-10-16 18:50:04

0

我有同样的问题 - 我结束了我自己的UIPageControl。在主视图控制器中创建一个新视图,然后将UIPageViewController视图和UIPageControl作为子视图添加,并设置框架,以便页面控件显示在pageViewController视图的底部(或任何您喜欢的位置)。

EDIT 由于UIPageViewController正在显示作为另一个控制器的子视图中,必须调用(从主视图控制器)[self addChildViewController:pageViewController]添加它作为一个子视图之前。之后致电[pageViewController didMoveToParentViewController:self]。这确保触摸事件等从主视图控制器传递到页面视图控制器。请参阅Apple Docs编辑完

设置页面控件的背景颜色clearColor从一个页面到下一个过渡会发生“后面”的页面控制。然后,您可以更新pageViewController didFinishAnimating委托函数中的页面控件(currentPage以及必要时的numberOfPages)。如果您希望能够点击页面控件切换页面,请在创建时添加合适的目标/操作方法,然后使用UIPageViewController的方法触发转换。

为确保UIPageViewController不会显示页面控件,请删除您的实现presentationCountForPageViewController:presentationIndexForPageViewController:

+0

这听起来很有希望 - 让我试试吧,回报:) – bodacious 2014-10-16 16:33:55

+0

@bodacious我意识到还有一个步骤,我应该提到关于添加一个视图控制器作为另一个视图控制器的子视图 - 尽管您可能已经知道了。我会编辑我的答案。 – pbasdf 2014-10-16 23:15:08

+0

你有没有机会有这样的代码? – 2016-06-29 01:11:16