这是一个具有高度详细涟漪动画的自定义表格视图。
我出于纯粹的好奇心根据 Dribbble 上的帖子 编写了这个控件,posts,出自 Dribbble 用户 Boris Valusek。我真的想做到阴影动画以及随振幅减少而递减的回跳效果。请查看一些屏幕截图和动画。
要启用 抗锯齿,您需要在您的 Info.plist 中将 UIViewEdgeAntialiasing
键设置为 YES。这样做会影响性能,但如果您是一位优化者,最终的性能会很好,并且会有如下的漂亮线条边缘
首选安装方法是使用 CocoaPods。只需将其添加到您的 Podfile 中
pod 'RNRippleTableView', '~> 0.1.6'
或者,如果您想手动安装,将 RNRippleTableView
的 .h 和 .m 文件拖放到您的项目中。您需要确保已包含 QuartzCore
框架。
可选地,您还需要将以下代码添加到使用 RNRippleTableView
的任何视图控制器中,以便在摇晃手势上有涟漪动画。
- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
[self.rippleView becomeFirstResponder];
}
要使用 RNRippleTableView
,只需将其添加到您的控制器中,并像其他任何视图一样进行布局。以一种类似 UITableView 的方式连接数据源和委托。您还必须注册将用作表格单元的类。这个类应该是类或 UIView 的子类。
self.rippleView = [[RNRippleTableView alloc] init];
[self.rippleView registerContentViewClass:[RNSampleCell class]];
self.rippleView.delegate = self;
self.rippleView.dataSource = self;
像您使用 UITableView 一样设置单元格,不过没有标识符和检查 nil 的部分,这些由您处理。
- (UIView *)viewForTableView:(RNRippleTableView *)tableView atIndex:(NSInteger)index withReuseView:(RNSampleCell *)reuseView {
reuseView.backgroundColor = [UIColor colorWithRed:117/255.f green:184/255.f blue:174/255.f alpha:1];
reuseView.titleLabel.text = [NSString stringWithFormat:@"Cell %i",index];
reuseView.titleLabel.textColor = [UIColor whiteColor];
return reuseView;
}
RNRippleTableView
附带了一些用于自定义外观和动画的选项。
@property (nonatomic, assign) BOOL rippleEnabled; // default YES
开关涟漪动画的打开和关闭。
@property (nonatomic, assign) BOOL isAnchoredLeft; // default YES
确定单元格的锚点。它还确定视图的哪一侧会进行动画以及绘制阴影的方向。
@property (nonatomic, assign) NSInteger rippleOffset; // default 3
涟漪的相邻单元格数量。
@property (nonatomic, assign) CGFloat rippleAmplitude; // default 20 (degrees)
在角度中旋转到震源动画面板的角度。
@property (nonatomic, assign) CGFloat rippleDuration; // default 0.75 seconds
单个弹跳动画完成所需的时间(秒)。
@property (nonatomic, assign) CGFloat rippleDelay; // default 0.1f
弹跳动画之间的定时延迟(秒),给整个涟漪动画带来延迟效果。快的看起来更像是爆发,而慢的看起来更像是水。
@property (nonatomic, assign) BOOL rippleHasParentShading; // default YES
确定前一个视图是否在动画视图上投下阴影。
@property (nonatomic, assign) BOOL rippleHasShading; // default YES
确定整个视图在弹跳时是否被阴影覆盖。
@property (nonatomic, assign) BOOL ripplesOnShake; // default NO
您可以选择在摇晃手势中使用设备来动画化小涟漪。这是因为我觉得很有趣,所以加入的功能。
我创建了一个名为 RNTableView
的父项目,仅仅作为一个最低限度的项目,用于启动高度定制的类似 UITableView 类。这个项目完全受到 Mike Ash 的 Let's Build UITableView 博客文章的启发。
Boris Valusek 是这个想法背后的创作者,他在 Dribbble 上面提出了这个想法。原创性的全部荣誉应归功于他。
如果您已经在实际应用程序中使用了此项目,请通知我!看到别人拿我的作品发挥创意,让我感到无比高兴。
查看 LICENSE。