使用三个视图的无限循环分页 UIScrollView
Posted
技术标签:
【中文标题】使用三个视图的无限循环分页 UIScrollView【英文标题】:Paginating UIScrollView with infinite loop of three views 【发布时间】:2011-07-22 11:07:19 【问题描述】:我想创建一个具有三个常量视图的UIScrollView
。中间视图应始终在最初显示。当用户向右滚动时,视图 1 将成为活动视图,而其他两个视图将像循环一样移动:视图 3 现在将在左侧,而视图 2 在右侧。附图说明了我想要什么:
这可能吗?
【问题讨论】:
【参考方案1】:仅 3 页
有时您可能想要一个无限的页面循环,但又不想 加载大量内容。例如,您可能有很多 在 UIScrollView 中显示的内容。装载大量 数据不会有理想的方法来处理这种情况。
逻辑 我们可以在那里使用的是将 UIScrollView 保持在三个页面上。 数据会加载到每个页面上,用户会一直在看 中间页的数据。当用户滚动到新页面时, 每个页面的内容将被重置,偏移量将返回 用户返回查看中间页面。这样即使你可能 有大量数据要滚动浏览,并非全部加载 一次。一次只能加载三个页面。
...取自http://iosdevelopertips.com/user-interface/creating-circular-and-infinite-uiscrollviews.html
【讨论】:
【参考方案2】:让您的滚动视图连续显示 5 个视图。将第一个视图视图 3 设置为下一个 1、2、3、1。在您想要的位置启动 Scrollview。
【讨论】:
【参考方案3】:很有可能。您可以继承 UIScrollView
并在其 - (id)init
方法中删除类似的内容。
int numberOfPages = 3;
// For ease in referencing sizes
CGFloat portalHeight = self.frame.size.height;
CGFloat portalWidth = self.frame.size.width;
self.contentSize = CGSizeMake(self.frame.size.width * numberOf Pages, self.frame.size.height);
self.contentOffset = CGPointZero;
// Needed to lock scrolling to pages
self.pagingEnabled = YES;
// Setup pages
for (NSUInteger i = 0; i < numberOfPages; i++)
// Add subviews here
编辑:我可能不完全理解你的问题。这些应该是可以连续循环的视图“轮播”吗?
【讨论】:
【参考方案4】:scroll3.contentOffset = CGPointMake(scroll3.frame.size.width*2, 0);
【讨论】:
以上是关于使用三个视图的无限循环分页 UIScrollView的主要内容,如果未能解决你的问题,请参考以下文章