2014-10-16 56 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