2013-08-20 46 views
0

我有一個uiscrollview,我把4 uiviews作出選項。我把標籤1爲uiview1和標籤2爲uiview2,對於uiview 3我把標籤3和uiview4我把標籤4.uiscrollview拉水平來選擇對象基礎上你拖動多遠

之後,我隱藏4 uiview,所以每次我拉下屏幕4 uiviews將顯示基於用戶拉多遠。

任何人都可以舉例說明如何顯示哪些uiview被選中,當你拉動屏幕在iOS的iPhone?

回答

0

你可以使用scroll View的contentOffset來查找用戶拉動滾動View的距離。

使用滾動視圖的委託方法:

- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate 

通過檢查你的觀點&滾動視圖contentOffset框架,你可以決定哪些觀點是可見的(即uiview1,uiview2,..)。

編輯:

你的邏輯應該是這樣的:

if(uiview1.frame.origin.y - scrollView.contentOffset.y > uiview1.frame.origin.y + uiview1.frame.size.height) 
{ 
    //your logic for selection of uiview1 
}else if....... 

從去年以第一個視圖應用此條件。

+0

你能舉個例子嗎? – Aragon

+0

查看編輯答案。這可能會幫助你。 – OMK

+0

嗨@OMK,當我停止拉動並且(uiview1,uiview2 ...)內容將顯示在屏幕某處時,您可以舉出更多示例嗎?我是ios的新手,我對編碼並不熟悉。 – Aragon

0

爲了便於參考,您可以從這裏看到一個頁面控件的示例實現。 http://developer.apple.com/library/ios/#samplecode/PageControl/

對於你想要的實現,令你意外的是,scrollview的寬度實際上小於320(或480)。要設置的神奇屬性是:

scrollView.clipsToBounds = NO 此實現的唯一問題是,如果觸摸位於scrollView的邊界之外,則scrollview將不會觸摸事件。這可以通過將其父項hitTest事件傳遞給scrollView來解決。

只是鏈接到一個更好的解釋:UIScrollView的水平分頁像移動Safari瀏覽器選項卡

從我的建議略有不同,但做同樣的事情。

編輯:

我有一個小項目,稱爲LXPagingViews,做以上,希望在開箱方式(請給我發的問題拉入請求或反饋):https://github.com/lxcid/LXPagingViews

+0

你爲什麼抄襲?答案和開源插件課程來自@lxcid,而不是你。 http://stackoverflow.com/questions/5618780/uiscrollview-with-pagination-showing-part-of-the-previous-following-pages/5618930#5618930 – Bourne