ScrollView为圆形

时间:2011-12-05 12:07:22

标签: iphone objective-c cocoa-touch ipad

我想创建与在app app中作为sonypictures滚动图像完全相同的内容。是否可以使用scrollview。

screenshot

请任何人帮助我。我怎么能创造那个。

2 个答案:

答案 0 :(得分:3)

我只是仔细看看iCarousel,看起来它的“Cylinder”型旋转木马应该是你想要的。

我的原始答案有历史原因:

我不知道现成的解决方案,所以你可能不得不像其他人所说的那样使用Core Animation。但是,像这样的开源项目,TapKu (TKCoverflowView)iCarouselMBCoverFlowView,都模仿“覆盖流程”应该为您提供一个良好的起点(通过CocoaControls找到{{3 }},herehere)。

答案 1 :(得分:0)

首先,如果您只想要在2D表面上部分显示左右海报的行为,就像在iPhone上的Safari中切换标签一样。这可以通过常规滚动视图来实现。讨论它有很多问题,例如paging like safariiPad document previewpaging uiscrollview,然后它们会链接到其他相关问题和答案。如果这对您来说是一个好的解决方案,那么我相信您可以在其中一个帖子中找到答案。

但是,如果它是您之后的3D圆柱体,那么您将不得不使用第三方框架,或者您必须编写自己的代码才能获得圆柱体效果。

编写自己的代码时,需要考虑两个方面。第一个是界面的外观,另一个是用户在用户面部滚动时的感受。我没有使用索尼应用程序,所以我不知道它是如何表现的。我猜测它是“页面”,即总是以电影海报为中心停止,就像UIScrollView可以为你做的那样。

你可以根据开启分页的UIScrollView解决方案来获得最好的滚动,但你也可以在你的视图中添加一个UISwipeGestureRecognizer,并使用左右滑动来向左或向右切换一张海报。

如果您使用UIScrollView方法,那么我建议您查看上面的链接并尝试从那里开始工作(并在遇到问题时提出新问题)。

使用第二种方法(UISwipeGestureRecognizer),您将拥有一个主视图,我将其称为“电影视图”。它的层将有许多“海报层” - 每个都有一张海报的子层。根据您想要在屏幕上显示的海报数量,您可以为海报的每个位置(中心,左侧和右侧(以及可选的leftEdge,rightEdge或类似的东西)定义CATransform3D。然后当UISwipeGestureRecognizer检测到滑动时在电影视图中的任何地方(整个视图),您将更改所有图层上的转换属性,以便它们可以设置为新位置的动画。您还可以进行在左侧和右侧屏幕上移动图层的转换通过使用旋转和透视(谷歌“CATransform m34”,如果你不确定我的意思)你可以让它看起来像层沿圆柱移动。

如果你在网上搜索或只是在StackOverflow上搜索“Core Animation CoverFlow”,你会找到可以帮助你入门的答案。只需更改旋转,使偏心层旋转远离您,使图层变小然后稍微向下移动,您将获得Sony应用程序所具有的“柱面效果”。

如果您遇到困难或只是想了解更多关于核心动画的信息,那么有很多很棒的资源,例如这些图书M. Zarra & M. Long: Core AnimationB. Dudney: Core Animation

此外,Bill Dudney的this screencast-series(与第二本书相同)是一个出色的核心动画资源。第4集甚至适用于Cover Flow类应用程序。