测试已测试 | ✗ |
Lang语言 | Obj-CObjective C |
许可证 | MIT |
Released上次发布 | 2017年2月 |
由Bence Feher维护。
一个由Google的Material Design: Paper Elements启发的UITableViewCell子类。
请参阅包含的变更记录文件。
BFPaperTableViewCell是UITableViewCell的一个子类,其行为类似于Google的Material Design Labs中的新纸张表格单元格。所有动画都是异步的,在子层上执行。BFPaperTableViewCells可以通过公共属性轻松自定义!可以自定义按圈颜色,背景渐变颜色,背景渐变透明度,背景高亮(停留或渐变消失),按圈涟漪位置和按圈直径。
默认情况下,BFPaperTableViewCells使用“智能颜色”,会使按圈颜色和背景渐变颜色与textLabel
颜色匹配。您可以通过将属性.usesSmartColor
设置为您来关闭智能颜色。如果禁用智能颜色,则默认将使用灰色颜色,既用于按圈颜色也用于背景颜色渐变。您可以通过以下内容设置自己的颜色:.tapCircleColor
和.backgroundFadeColor
。请注意,设置这些将禁用智能颜色。
BOOL usesSmartColor
一个标志,将其设置为YES以使用智能颜色,或设置为NO以使用自定义颜色方案。虽然智能颜色是默认设置(usesSmartColor = YES),但自定义也很酷。
CGFloat touchDownAnimationDuration
代表在触摸下拉出的动画持续时间的CGFLoat。默认值是
0.25f
秒。(钢人队加油!)
CGFloat touchUpAnimationDuration
代表在触摸释放时执行的动画持续时间的CGFLoat。默认值是
2 * touchDownAnimationDuration
秒。
CGFloat tapCircleDiameterStartValue
代表在按圈生成后立即开始,在它增长之前的直径的CGFLoat。默认值是
5.f
。
CGFloat tapCircleDiameter
表示点击圆圈的直径的 CGFloat 值。默认情况下,它将是
MAX(self.frame.width, self.frame.height)
的结果。tapCircleDiameterFull
将计算一个始终填满整个视图的圆圈。任何小于或等于tapCircleDiameterFull
的值都将使用默认值。常量:tapCircleDiameterLarge
、tapCircleDiameterMedium
和tapCircleDiameterSmall
也可用于。
CGFloat tapCircleBurstAmount
表示在爆炸时我们应该增加点击圆圈直径多少的 CGFloat 值。默认为
100.f
。
UIColor *tapCircleColor
用作点击位置出现的圆圈的 UIColor。注意:设置此值将取消点击圆圈的“智能颜色”功能。建议使用小于
1
的 Alpha 值。
UIColor *backgroundFadeColor
用于淡入清除背景的 UIColor。注意:设置此值将取消背景淡入的“智能颜色”功能。建议使用小于
1
的 Alpha 值。
BOOL rippleFromTapLocation
一个标志,设置为
YES
以使点击圆圈从触摸点开始震动。如果设置为NO
,则点击圆圈始终从视图中心开始震动。默认值为YES
。
BOOL letBackgroundLinger
一个 BOOL 标志,用于确定是否在点击后在背景周围保持一段时间,从而实现“突出显示/选择”单元格的功能。请注意,这不会触发
setSelected:
!它纯粹是审美的。此外,这与cell.selectionStyle
有所冲突,因此默认情况下,构造函数将其设置为UITableViewCellSelectionStyleNone
。默认为 YES。
BOOL alwaysCompleteFullAnimation
一个 BOOL 标志,表示是否始终完成一个完整的动画周期(背景淡入、点击圆圈增长和爆炸、背景淡出)然后再开始另一个。NO 的行为将与其他 BFPaper 控件相同,快速点击会产生多个圆圈,这些圆圈逐个淡出。默认为
YES
。
CGFloat tapDelay
用于设置延时触发点击事件/触发器以产生圆圈的时间(以秒为单位)的 CGFLoat。例如,如果 tapDelay 设置为
1.f
,则您需要按住单元格 1 秒才能触发产生一个圆圈。默认为0.1f
。
UIBezierPath *maskPath
可以设置以覆盖涟漪和背景淡入的 maskPath 的 UIBezierPath。如果您为单元格有自定义路径,请设置此值。如果这是
nil
,则 BFPaperTableViewCell 将尽力提供正确的 mask。默认为nil
。
将 BFPaperTableViewCell 的头文件和实现文件添加到您的项目中。(.h & .m)
之后,您可以使用它就像使用任何其他的 UITableViewCell
一样。
如果您使用带有原型单元格的故事板,请确保将原型单元格的类更改为 BFPaperTableViewCell!
// Register BFPaperTableViewCell for our tableView in viewDidLoad:
- (void)viewDidLoad
{
...
[self.tableView registerClass:[BFPaperTableViewCell class] forCellReuseIdentifier:@"BFPaperCell"]; // NOTE: This is not required if we declared a prototype cell in our storyboard (which this example project does). This is here purely for information purposes.
...
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
BFPaperTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"BFPaperCell" forIndexPath:indexPath];
if (!cell) {
cell = [[BFPaperTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"BFPaperCell"];
}
cell.rippleFromTapLocation = NO; // Will always ripple from center if NO.
cell.tapCircleColor = [[UIColor paperColorDeepPurple] colorWithAlphaComponent:0.3f]; // Paper Colors can be found in my BFPaperColors library :)
cell.backgroundFadeColor = [UIColor paperColorBlue]; // Paper Colors can be found in my BFPaperColors library :)
cell.backgroundFadeAlpha = 0.7f;
cell.letBackgroundLinger = NO;
cell.tapCircleDiameter = bfPaperTableViewCell_tapCircleDiameterSmall;
return cell;
}
BFPaperTableViewCell 使用 MIT 许可证
请参阅包含的 LICENSE 文件。