[英]Change Number of Pages in UIScrollView
我正在使用UIScrollView
,其中有幾個項目需要顯示。 當前,第一次加載時,我的第一項居中於UIScrollView
的中間。 我正在嘗試部分顯示第二個項目,第二個項目,以便用戶知道還有更多項目需要查看,從而使他們滾動查看這些項目。
我想做的是配置它,以便用戶可以自由地滑動和滾動,就像UIScrollView
允許的那樣,但是,每次用戶滑動時,我都希望UISCrollView
自動停止在最靠近視圖中心的項目上。
我已啟用分頁並了解了分頁的工作原理。 我正在嘗試做的是使它可以更改分頁似乎創建的“固定頁面點”的數量。 啟用分頁后,似乎將視圖的總寬度除以2,從而創建了3個停止點:一個在視圖的左邊界末尾,一個在直接中心(視圖寬度/ 2),另外一個在視圖的最右邊界。
如果有人知道如何更改停止點或頁面點(CGPoints)的數量,無論它們叫什么,我都會非常感激。 以下是我要實現的目標的圖像。
不幸的是,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.