IATBaseClasses
是我在 iOS 应用开发中使用的对象集合。这些是我过去几年开发出来以提供便利而不会增加很多不必要的代码的工具。我非常热衷于避免做任何我认为过于扭曲或邪恶的事情。这意味着没有方法交换,或向其他对象添加动态属性。这些事情可能有它们存在的位置,但在这里没有。
在这里引起关注的主要对象可能是提供 3D 滚轮视图 的那些,以及便利的视图。这个滚轮基于 UITableViewDataSource 和其相关类和协议。
IATCarouselTableViewCell => UITableViewCell
IATCarouselTableView => UITableView
IATCarouselTableViewController => UITableViewController
UITableView 展示了一系列的单元格,所有这些单元格都可以在任何时候进行交互,而滚轮展示了一系列的单元格,其中只有最前面单元格是打算进行交互的。由于这种差异,您会在滚轮中找到一些方法被移除,因为它们在这里不太合适。
IATCarouselDataViewController
是一个可选的视图控制器,允许您配置滚轮的外观。您可以根据喜好展示该视图控制器。我通常使用 UIGestureRecognizer 触发它。
IATCarouselData
是一个必需的对象,它简单地管理滚轮的布局规范。
然后 IATCarouselTableView
使用这些数据来生成单元格布局。
这些滚轮对象的一个关键技术特性是配置滚轮布局相当简单。目前代码使用了 V 形布局,但使用椭圆、圆、半圆或贝塞尔路径应该相当容易。我已经将这些之间切换了无数次,而且几乎没有困难。为了简单起见,代码假定了类似圆上的单元格位置。因此,使用 0 到 360 范围内的角度来定位所有单元格在它使用的任何布局函数中。
注意:可能需要一些 3D 技能来计算每个单元格的有效位置和方向,但有许多与布局函数 (IATLayoutFunction2d.h
) 相关的技巧可以简化这一点。
旋转木马组件使用了Michael Tyson的(Tasty Pixel) TPPropertyAnimation
,并我做了进一步的修改,增加了基于动量的动画效果。每当手指抬起时,单元格使用此动画对象重新定位到其最终静止位置。
IATPerspectiveView
IATViewFader
IATViewSizer
IATViewHider
CATransformUtilities
CAVectorUtilties
CGRectUtilities
请确保关闭IATBaseClasses项目,然后打开IATCarouselTest
文件夹,并找到IATCarouselTest.xcodeproj
。
IATCarouselTest.xcodeproj
包含一个示例应用程序,展示了如何在iPhone和iPad上构建一个旋转木马。只需打开它,选择iPad或iPhone构建,然后按运行。
版权(c) 2012 Ingenious Arts and Technologies LLC
此源代码根据MIT许可证授权。我希望您免费使用,没有任何对我的义务,除了在您的应用程序或在设置中某个地方的小型归属外。请参阅License.rtf文件,了解许可信息和所需归属。但简而言之,只需将上述版权声明包含到您的应用程序中,我们就可以顺利地进行。
Kurt Arnlund
Ingenious Arts and Technologies LLC