簡體   English   中英

更改UIScrollView中的頁面數

[英]Change Number of Pages in UIScrollView

我正在使用UIScrollView ,其中有幾個項目需要顯示。 當前,第一次加載時,我的第一項居中於UIScrollView的中間。 我正在嘗試部分顯示第二個項目,第二個項目,以便用戶知道還有更多項目需要查看,從而使他們滾動查看這些項目。

我想做的是配置它,以便用戶可以自由地滑動和滾動,就像UIScrollView允許的那樣,但是,每次用戶滑動時,我都希望UISCrollView自動停止在最靠近視圖中心的項目上。

我已啟用分頁並了解了分頁的工作原理。 我正在嘗試做的是使它可以更改分頁似乎創建的“固定頁面點”的數量。 啟用分頁后,似乎將視圖的總寬度除以2,從而創建了3個停止點:一個在視圖的左邊界末尾,一個在直接中心(視圖寬度/ 2),另外一個在視圖的最右邊界。

如果有人知道如何更改停止點或頁面點(CGPoints)的數量,無論它們叫​​什么,我都會非常感激。 以下是我要實現的目標的圖像。

  1. 視圖加載時,第一項居中。
  2. 用戶已向右滾動,並停在了項目2上,該項目現在顯示在屏幕中央。
  3. 再次向右滾動用戶,現在第3項居中。

在此處輸入圖片說明

不幸的是,UIScrollView分頁無法以您希望的方式工作。

分頁會在Content的大小內創建盡可能多的UIScrollView的Bounds。 例如,如果滾動視圖的幀大小為200x200,而內容為400x200,則它將創建兩個水平頁面。 如果是600x200,它將創建三個水平頁面,依此類推。

這意味着您將無法以查看其他元素的方式進行頁面調度。

為了做到這一點,我建議重寫此方法:

- (void)scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inout CGPoint *)targetContentOffset

這是此示例的使用效果與完整分頁相同。 我將使用具有元素大小的targetOffset行來使其全部工作。

- (void)scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inout CGPoint *)targetContentOffset {

    float expectedOffset = targetContentOffset->x;
    if (expectedOffset == 0 || expectedOffset == scrollView.contentSize.width)
        return;
    CGFloat targetOffset = roundf(expectedOffset / scrollView.frame.size.width) * scrollView.frame.size.width;

    targetContentOffset->x = targetOffset;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM