2017-01-05 68 views
1

我有一個UIScrollView水平滾動啓用分頁。有什麼辦法可以改變滾動視圖的分頁,以便在滾動視圖的整個長度上對齊一半。我添加了顯示我在找什麼的圖片。自定義分頁UIScrollView

Page 1

Page 2

Page 3

override func viewDidLoad() { 
    super.viewDidLoad() 


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

let view1 = UIView() 
view1.frame = CGRect(x: 0, y: 0, width: self.view.frame.size.width/2, height: self.view.frame.size.height) 
view1.backgroundColor = UIColor.purple 
scrollView.addSubview(view1) 

let view2 = UIView() 
view2.frame = CGRect(x: self.view.frame.size.width/2, y: 0, width: self.view.frame.size.width/2, height: self.view.frame.size.height) 
view2.backgroundColor = UIColor.green 
scrollView.addSubview(view2) 

let view3 = UIView() 
view3.frame = CGRect(x: self.view.frame.size.width, y: 0, width: self.view.frame.size.width/2, height: self.view.frame.size.height) 
view3.backgroundColor = UIColor.yellow 
scrollView.addSubview(view3) 

let view4 = UIView() 
view4.frame = CGRect(x: self.view.frame.size.width + self.view.frame.size.width/2, y: 0, width: self.view.frame.size.width/2, height: self.view.frame.size.height) 
view4.backgroundColor = UIColor.red 
scrollView.addSubview(view4) 

} 
+0

請詳細說明,並顯示您的代碼 –

+0

我有一個滾動視圖覆蓋整個屏幕和滾動視圖內的四個視圖。這四個子視圖中的每一個都具有寬度的一半。我想這個滾動視圖捕捉到下一個子視圖(這是屏幕寬度的一半)。我會附上一段視頻和我的代碼來展示我已經構建的內容。 –

+0

以下是視頻:https://drive.google.com/file/d/0B6E9tiTyLokuRmVjelRmVWgzbHc/view?usp =分享 –

回答

0

你可以設置一個委託的滾動視圖和執行的UIScrollViewDelegate方法之一:

func scrollViewWillEndDragging(
    _ scrollView: UIScrollView, 
    withVelocity velocity: CGPoint, 
    targetContentOffset: UnsafeMutablePointer<CGPoint> 
) 

你需要做一個bi當你收到這個呼叫時自定義邏輯。具體來說,您將檢查targetContentOffset以及velocity以查看scrollView預期停止的位置以及用戶正在拖動哪個方向。然後,您將targetContentOffset更改爲應該實際停止的新位置。

在你的情況下,新的targetContentOffsetx-值將是偶數頁的倍數。顯然,如果你有一個奇數頁面,你必須考慮最後一頁的偏移量,並做一些有點不同的事情。

您可能還需要禁用默認UIScrollView分頁並自己處理所有分頁,因爲您的自定義行爲與默認分頁行爲衝突。

+0

謝謝!我會試試這個 –