受谷歌 Paper Material Design 启发的 iOS 复选框。
BFPaperCheckbox 为 UIControl 的子类,其行为与谷歌 Material Design Labs 中的新 paper 复选框非常相似。所有动画都是异步的,并在子层上执行。BFPaperCheckboxes 可以立即使用,具有令人愉悦的默认行为,但它们可以进行轻松的自定义!勾选标记颜色和点击圆圈颜色,包括正向和反向(对于勾选和未勾选)都可以通过公共属性轻松自定义。您还可以设置点击圆圈是否应从点击位置出现,或直接从控件中心出现。
默认情况下,BFPaperCheckboxes 使用 "智能颜色",这将匹配点击圆圈的正面颜色到勾选标记的颜色(.checkmarkColor
)。您可以通过以下方式设置自己的颜色: .positiveColor
和 .negativeColor
。注意,设置这些值将禁用智能颜色功能。
注意:请尽量使用不慢的动画时间。它会破坏视觉效果(虽然不会破坏功能),而且你为什么想这样做呢?
BOOL isChecked
表示复选框状态的 BOOL 值。YES 表示勾选,NO 表示未勾选。
CGFloat touchDownAnimationDuration
(钢人队!)代表触摸“按下”时动画持续时间的 CGFLoat 值。默认为 0.25f 秒。注意,负值将被转换为默认值。不要搞笑!
CGFloat touchUpAnimationDuration
代表触摸“抬起”时动画持续时间的 CGFLoat 值。默认为 touchDownAnimationDuration 的两倍秒数。注意,负值将被转换为默认值。不要搞笑!
BOOL rippleFromTapLocation
一个标志,设置为 YES 以从触摸点开始点击圆圈的涟漪。如果设置为 NO,则点击圆圈始终从按钮中心开始涟漪。默认为 NO。
UIColor *checkmarkColor
用于勾选标记颜色的 UIColor。注意,
self.tintColor
将用于方块颜色。
UIColor *positiveColor
用于出现在您点击以勾选框处出现的圆圈的 UIColor。默认值为从
.checkmarkColor
属性智能计算得来。设置为 nil 以访问默认值。建议使用小于 1 的透明度值。
UIColor *negativeColor
用于出现在您点击以取消勾选框处出现的圆圈的 UIColor。默认值为从
.tintColor
属性智能计算得来。设置为 nil 以访问默认值。建议使用小于 1 的透明度值。
CGFloat cornerRadius
控制圆角半径的 CGFloat 值。默认值为 (bfPaperCheckboxDefaultDiameter / 2)。注意,负值将被转换为 0。严禁恶作剧!
CGFloat startDiameter
表示在出现后、增长之前的点击圆的直径的 CGFLoat。默认为 1.f。注意,负值以及小于 1 的值将被转换为默认值。严禁恶作剧!
CGFloat endDiameter
表示点击圆直径的 CGFloat 值。默认将占满整个复选框背景圆。注意,零和负值将被转换为默认值。严禁恶作剧!
CGFloat burstAmount
表示在爆炸时我们应该增加点击圆直径多少的 CGFloat 值。默认为 0,因为我们无法看到整个框架。
.tapCircleDiameter
占满整个框架的直径。如果您想看到爆炸效果,请将.tapCircleDiameter
设置为一个小于控制本身直径的值。注意,负值将被转换为默认值。严禁恶作剧!
id <BFPaperCheckboxDelegate> delegate
一个用于协议的委托!它遵循的函数细节如下。
(void)paperCheckboxChangedState:(BFPaperCheckbox *)checkbox
一个可选的协议方法,用于检测复选框状态是否改变。您可以通过
checkbox.isChecked
检查其当前状态。
CGFloat const bfPaperCheckboxDefaultDiameter
一个推荐的适当大小值(49 个点)。(例如:
[[BFPaperCheckbox alloc] initWithFrame:CGRectMake(x, y, bfPaperCheckboxDefaultDiameter, bfPaperCheckboxDefaultDiameter)];
)
(void)switchStatesAnimated:(BOOL)animated
使用此函数手动或通过程序改变此复选框的状态。@param
animated
一个 BOOL 标志,用于选择是否要动画改变。
(void)checkAnimated:(BOOL)animated
使用此函数手动勾选复选框。如果已勾选,则不执行任何操作。@param
animated
一个 BOOL 标志,用于选择是否要动画改变。
(void)uncheckAnimated:(BOOL)animated
使用此函数手动取消复选框的勾选。如果已取消勾选,则不执行任何操作。@param
animated
一个 BOOL 标志,用于选择是否要动画改变。
将 BFPaperCheckbox 头文件和实现文件添加到您的项目中(.h 和 .m)
BFPaperCheckbox *paperCheckbox = [[BFPaperCheckbox alloc] initWithFrame:CGRectMake(x, y, bfPaperCheckboxDefaultDiameter, bfPaperCheckboxDefaultDiameter)];
self.programmaticPaperCheckbox = [[BFPaperCheckbox alloc] initWithFrame:CGRectMake(0, 0, bfPaperCheckboxDefaultDiameter, bfPaperCheckboxDefaultDiameter)];
self.programmaticPaperCheckbox.delegate = self;
self.programmaticPaperCheckbox.tintColor = [UIColor colorWithRed:97.f/255.f green:97.f/255.f blue:97.f/255.f alpha:1];
self.programmaticPaperCheckbox.touchUpAnimationDuration = 0.5f;
self.programmaticPaperCheckbox.touchDownAnimationDuration = 0.5f;
self.programmaticPaperCheckbox.rippleFromTapLocation = YES;
self.programmaticPaperCheckbox.checkmarkColor = [UIColor blueColor];
self.programmaticPaperCheckbox.positiveColor = [[UIColor greenColor] colorWithAlphaComponent:0.5f];
self.programmaticPaperCheckbox.negativeColor = [[UIColor redColor] colorWithAlphaComponent:0.5f];
self.programmaticPaperCheckbox.startDiameter = 10;
self.programmaticPaperCheckbox.endDiameter = 35;
self.programmaticPaperCheckbox.burstAmount = 10;
[self.view addSubview:self.programmaticPaperCheckbox];
使用 'switchStates...’ 切换
[self.paperCheckbox switchStatesAnimated:animate];手动勾选或取消勾选
if (self.paperCheckbox.isChecked) { [self.paperCheckbox uncheckAnimated:animate]; } else { [self.paperCheckbox checkAnimated:animate]; }
BFPaperCheckbox 使用 MIT 许可证
请参阅包含的 LICENSE 文件。