BFPaperCheckbox 2.1.0

BFPaperCheckbox 2.1.0

测试已测试
条目语言 Obj-CObjective C
许可证 MIT
发布最新发布2016年11月

Bence Feher 维护。



  • 作者
  • Bence Feher

受谷歌 Paper Material Design 启发的 iOS 复选框。

Animated Screenshot

关于

现支持 Interface Builder 定制化!

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

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 文件