2011-07-13 36 views
2

我想要一个带有视图的滚动视图,用户可以向左或向右滑动并与之交互。 scrollview具有UIViews,用户需要与之交互。带有页面左右预览的UIScrollView

scrollview

我已经能够添加的意见和它的作品没关系与寻呼已启用。不幸的是,我似乎找不到预览的好方法。

有一个帖子在UIScrollview Paging Hack,这解释了如何处理它。该解决方案有三个问题:

  • 它只有在预览是中心图像宽度的1/4时才有效。我原本以为我找到了一个公式来处理预览的大小,但随着幻灯片数量的变化,我错了。
  • 如果预览的宽度不是宽度的四分之一,则滑动可以起作用,但中心滑动会偏离中心。
  • 当前幻灯片没有启用UI交互,除非它是第一个(也是可见部分)。当您滑动到其他部分时,我无法使用按钮。

我在网上搜了很多关于如何做到这一点,并且一直没能找到解决办法。即使在目标C中也有建议。

UPDATE:我想出了一个解决方案,它可以完成我在这里描述的任务。 https://github.com/roland/Carousel/tree/master/Carousel

+0

你可以设置滚动视图框到你真正想要的那个,启用分页,但是设置clipsToBounds = NO,这样内容将显示在分页框之外? – thelaws

+0

我试过了,问题在于当您滚动时,立即向左或向右滑动跳过。我需要预览在滑动后移动到中心,好像指示一个快照。 – Candide

回答

1

有一张来自去年的WWDC的地址簿示例代码 - 我认为它被称为PhotoBook--显示了如何完成此操作。基本上,这是需要的设置:

  • 与位于滚动视图内(每个内容页面的宽度)+
  • 网页内容(网页之间的期望的填充空间)的宽度A滚动视图(页面索引)*((页面宽度)+(填充空间))的X位置)-0.5 *(填充空间)
  • 包含滚动视图的子类视图,其0123,方法被覆盖为始终返回它包含的滚动视图
+0

!谢谢。前两个项目,几乎是我所拥有的。最后一个项目,与Test是有趣的,但对于scrollview的子类,它总是返回相同的坐标,并返回当前实例没有使它停止。我目前正在调查是否setContentOffset是要走的路。我可以计算出其中的帧索引,并检查动画是否正在减速似乎有点体面。一旦我完成,我会在github上发布它。 – Candide

+0

不要子类化滚动视图本身 - 子类化一个泛型UIView,它是您想要滚动的整个可见区域的大小,并使滚动视图成为子视图。这个技巧的关键在于你可以在滚动视图中将'pagingEnabled'设置为YES,它会为你处理减速/居中。 –

+0

我不想强加于人。我试图从2010年找到wwdc演示文稿,但无法找到您要描述的内容。也许,有一个我看不到的技巧。不过,我确实想出了一个解决方案,它可以做到我想要的https://github.com/roland/Carousel/tree/master/Carousel。谢谢你的帮助。 – Candide