BFPaperButton 2.1.2

BFPaperButton 2.1.2

测试已测试
语言语言 Obj-CObjective C
许可证 MIT
发布最后发布2017 年 5 月

Bence Feher 维护。



  • Bence Feher

受 Google Material Design 的 Paper 主题启发的扁平按钮。

Animated Screenshot

关于

现在具有更平滑的动画和更多的公共属性,以便更轻松地进行自定义!

BFPaperButton 是 UIButton 的子类,其行为类似于 Google 的 Material Design Labs 中的新纸按钮。所有动画都是异步的,在子层上执行。BFPaperButtons 直接使用令人愉悦的默认行为进行工作,但它们可以轻松进行自定义!通过公共属性可以轻松自定义圆角半径、点击圆圈颜色、背景渐变颜色和点击圆圈直径。

BFPaperButtons 有两种类型:平的或提升的。平的 BFPaperButtons 没有阴影,在所有动画过程中都将保持扁平。平按钮可以是透明的,在这种情况下,背景在被点击时也会稍微淡入。提升的 BFPaperButtons 有一个随着点击一起动画的阴影,使其有随着触摸提升的感觉。提升的 BFPaperButtons 与清晰 backgrounds 颜色不好看,因为它将暴露其阴影层。

默认情况下,BFPaperButtons 使用 "智能颜色",这会将点击圆圈和背景渐变颜色与 titleLabel 的颜色相匹配。您可以通过将属性设置为 YES 来关闭智能颜色。如果您禁用智能颜色,点击圆圈和背景颜色渐变将默认使用灰色。您可以通过:.tapCircleColor.backgroundFadeColor 来设置自己的颜色。注意,设置这些将禁用智能颜色。

注意 当在 Storyboard 中将按钮类型设置为自定义时,需要将其设置为 Custom 以防止标题在 UIControlStateHighlighted 状态下渐出。

属性

UIColor *shadowColor

提升按钮的阴影颜色。建议使用 alpha 值为 1,因为 shadowOpacity 会覆盖此颜色的 alpha。

CGFloat loweredShadowOpacity

A CGFLoat 代表提升按钮在降低(空闲)时的阴影不透明度。默认值为 0.5f

CGFloat loweredShadowRadius

A CGFLoat 代表提升按钮在降低(空闲)时的阴影半径。默认值为 1.5f

CGSize loweredShadowOffset

A CGSize 代表提升按钮在降低(空闲)时的阴影偏移量。默认值为 (0, 1)

CGFloat liftedShadowOpacity

A CGFloat表示当提升(触摸时)RAISED按钮的阴影透明度。默认值为0.5f

CGFloat liftedShadowRadius

A CGFloat表示当提升(触摸时)RAISED按钮阴影的半径。默认值为4.5f

CGSize liftedShadowOffset

A CGSize表示当提升(触摸时)RAISED按钮阴影的偏移。默认值为(2, 4)

CGFloat touchDownAnimationDuration

A CGFloat表示在触摸时发生的动画的持续时长。默认值为0.25f秒。(为钢铁人加油!)

CGFloat touchUpAnimationDuration

A CGFloat表示在触摸后发生的动画的持续时长。默认值为touchDownAnimationDuration的2倍秒。

CGFloat tapCircleDiameterStartValue

A CGFloat表示当触摸圆刚出现时的直径,在它生长之前。默认值为5.f

CGFloat tapCircleDiameter

代表触摸圆直径的CGFloat值。默认将是用MAX(self.frame.width, self.frame.height)计算的结果。tapCircleDiameterFull将计算出一个总是填充整个视图的圆。任何小于或等于tapCircleDiameterFull的值将使用默认值。还可以使用以下常量:tapCircleDiameterLargetapCircleDiameterMediumtapCircleDiameterSmall

CGFloat tapCircleBurstAmount

表示在爆炸触摸圆时增加了直径的CGFloat值。默认值为100.f

CGFloat cornerRadius

将传播到子层的圆角。默认值为0

UIColor *tapCircleColor

用于出现在触摸位置的颜色。注意:设置此值将关闭触摸圆的“智能颜色”功能。建议使用小于1的透明度值。

UIColor *backgroundFadeColor

用于使背景淡入透明的颜色。注意:设置此值将关闭背景淡入的“智能颜色”功能。建议使用小于1的透明度值。

BOOL rippleFromTapLocation

设置为YES以使触摸圆从触摸点产生涟漪。如果设置为NO,则触摸圆始终从视图的中心产生涟漪。默认值为YES

BOOL rippleBeyondBounds

设置为YES以使触摸圆超出视图边界产生涟漪。如果设置为NO,则触摸圆将被裁剪到视图的边界内。默认值为NO

BOOL isRaised

设置为YES以将平面视图更改为提升,或设置为NO以将提升视图更改为平面。如果您使用了提供的自定义初始化器,您可能不需要修改此参数。如果您通过故事板或IB实例化并通过提升到平面更改,此参数就是为您设计的!默认值为YES

BOOL usesSmartColor

设置为YES以使用智能颜色,或设置为NO以使用自定义颜色方案。虽然智能颜色是默认值(usesSmartColor = YES),但自定义也非常酷。

关于提升与平面、智能颜色与非智能颜色的说明

提升

具有阴影,因此透明的背景看起来很傻。它只有触摸圆颜色。没有背景淡入。

平面

无阴影,因此清晰的背景看起来很好。如果背景是清晰的,它还将具有背景渐变颜色,以帮助可视化按钮及其框架。

SMART COLOR

将使用titleLabel的字体颜色来选择触摸圆圈颜色,如果背景是清晰的,也将选择一个较浅的背景渐变颜色。

NON SMART COLOR

将使用半透明的灰色触摸圆圈,如果背景是清晰的,还将使用较浅的半透明灰色背景渐变颜色。

用法

BFPaperButton头文件和实现文件添加到您的项目中。(.h & .m)

创建扁平的BFPaperButton

BFPaperButton *flatPaperButton = [[BFPaperButton alloc] initWithFrame:rect raised:NO];

创建凸起的BFPaperButton

BFPaperButton *raisedPaperButton = [[BFPaperButton alloc] initWithFrame:rect raised:YES];

工作示例

(直接从示例项目中提取。)

BFPaperButton *bfFlatSmart = [[BFPaperButton alloc] initWithFrame:CGRectMake(20, 20, 280, 43) raised:NO];
[bfFlatSmart setTitle:@"BFPaperButton Flat: Smart Color" forState:UIControlStateNormal];
bfFlatSmart.backgroundColor = [UIColor paperColorGray600];  // You can find this from my other library, BFPaperColors :)
[bfFlatSmart setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
[bfFlatSmart setTitleColor:[UIColor whiteColor] forState:UIControlStateHighlighted];
[bfFlatSmart addTarget:self action:@selector(buttonWasPressed:) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:bfFlatSmart];

自定义示例

(直接从示例项目中提取。)

BFPaperButton *circle2 = [[BFPaperButton alloc] initWithFrame:CGRectMake(116, 468, 86, 86) raised:YES];
[circle2 setTitle:@"Custom" forState:UIControlStateNormal];
[circle2 setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
[circle2 setTitleColor:[UIColor whiteColor] forState:UIControlStateHighlighted];
[circle2 addTarget:self action:@selector(buttonWasPressed:) forControlEvents:UIControlEventTouchUpInside];
circle2.backgroundColor = [UIColor colorWithRed:0.3 green:0 blue:1 alpha:1];
circle2.tapCircleColor = [UIColor colorWithRed:1 green:0 blue:1 alpha:0.6];  // Setting this color overrides "Smart Color".
circle2.cornerRadius = circle2.frame.size.width / 2;
circle2.rippleFromTapLocation = NO;
circle2.rippleBeyondBounds = YES;
circle2.tapCircleDiameter = MAX(circle2.frame.size.width, circle2.frame.size.height) * 1.3;
[self.view addSubview:circle2];

许可协议

BFPaperButton 使用MIT许可证

请参阅包含的LICENSE文件