2017-04-10 101 views
3

我一個滾動視圖的屬性isPagingEnabled設置爲true,像這樣:UIScrollView contentOffset的錯誤?

let scrollView = UIScrollView(frame: view.bounds) 
scrollView.contentSize = CGSize(width: view.bounds.width * 2, height: 0) 
scrollView.delegate = self 
scrollView.isPagingEnabled = true 
view.addSubview(scrollView) 

和委託方法:

func scrollViewDidScroll(_ scrollView: UIScrollView) { 
    print(scrollView.contentOffset.x) 
} 

當滾動視圖的邊界,控制檯打印,如圖:

enter image description here

enter image description here

紅色框中的值不應該打印出來,對不對?

但是,如果將isPagingEnabled設置爲false,則控制檯打印正常。這是一個UIScrollView的bug嗎?

回答

0

每當UIScrollView進行滾動時,此方法調用scrollViewDidScroll(_ scrollView: UIScrollView)。如果你滾動你的任何方向將得到這些類型的輸出。

但是如果你想要像一個分頁方法則代替這種方法,你可以使用:

func scrollViewDidEndDecelerating(_ scrollView: UIScrollView) { 

     let pageNumber = round(scrollView.contentOffset.x/scrollView.frame.size.width) 
     print("pageNumber = \(pageNumber)") 

    } 

通過這種方法,你會得到確切的頁面沒有UIScrollView

+0

不,你不明白我的意思。 – Mokyz

+0

所以請解釋一下你想要的...... –

+0

我的意思是'contentOffset'的打印值不正確,就像顯示的圖片一樣。 – Mokyz

0

請使用框架而不是邊界。 (U,Y)和尺寸(寬度,高度)相對於它自己的座標系統(0,0)表示。UIView的框架是矩形,表示爲相對於它所包含的超級視圖的位置(x,y)和大小(寬度,高度)。

let scrollView = UIScrollView(frame: view.frame.size) 
scrollView.contentSize = CGSize(width: view.frame.size.width * 2, 
height: 0) 
scrollView.delegate = self 
scrollView.isPagingEnabled = true 
view.addSubview(scrollView) 
+0

對不起,這不是我想要的,我重新編輯了這個問題,你可以回頭看看它。 – Mokyz

0

您的內容偏移顯示錯了,因爲你在這個方法中使用viewDidLoad中使用的內容大小內容大小比打印內容從設置

override func viewDidLayoutSubviews() 
{ 
    scrollView.contentSize = CGSize(width: view.bounds.width * 2, height: 0) 
} 
1

據我所知,它的正常工作,當您將contentSize設置爲您的滾動視圖時,它會在第一時間自行響應其代表的代碼

FUNC scrollViewDidScroll(_滾動視圖:UIScrollView中)

當用戶試圖滾動或拖動,上述代表將遞歸調用,在這裏您寬度的contentSize是雙您的看法界限寬度的(所以是二頁面中,contentOffset.x將與滾動的0和當前位置開始,如果是在第二頁,這將使你的看法寬* N),並設置isPagingEnabled真正

入住這https://developer.apple.com/reference/uikit/uiscrollview/1619404-contentoffset

的默認值是CGPoint零

其實contentOffset會告訴你當前的滾動位置。

+0

不,這不是我想要的,我重新編輯了問題,如圖所示,我認爲紅色框中的值是多餘的。他們不應該被打印。 – Mokyz

+0

請嘗試平滑滾動檢查其值,並拖動檢查它.. – karthikeyan

相關問題