DESlideToConfirmView 0.1

DESlideToConfirmView 0.1

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

Dream Engine 维护。



https://github.com/dreamengine/DESlideToConfirmView

作用

DESlideToConfirmView 是一个基于块的控件,允许用户滑动来确认。非常适合需要确保用户真正了解所涉及内容的场合,例如永久删除数据。

Example gif

注意:Dream Engine 已使用此控件使应用程序通过审核,但我们不对该控件在 App Store 中的安全性做出任何保证。

工作原理

您可以通过程序方式或 nibs 来实例化 DESlideToConfirmView

子视图组件

DESlideToConfirmView 有两个视图组件:一个滑块视图和一个轨道视图。默认情况下,控件具有默认的滑块和轨道。默认滑块是一个 DESlideToConfirmDefaultThumb 类(包含在 .h/.m 文件中),如果只是想快速开始,它具有一个居中标签。您还可以使用 DESlideToConfirmViewdefaultThumbWidth 属性来更改默认滑块的宽度。

您可以使用 customThumbView 属性设置自定义的滑块视图,并可以使用 customTrackView 属性设置自定义的轨道视图。请注意,设置其中一个之后,DESlideToConfirmView 的布局将更新,以便轨道视图的宽度等于控件宽度减去滑块视图的宽度。这将确保在 0% 时,滑块视图的中心将位于轨道的左侧,在 100% 时,滑块的中心将位于轨道的右侧。请注意,这也适用于任何默认或自定义滑块和轨道视图的组合。

状态更新

DESlideToConfirmView 有三种可能状态:DESlideToConfirmViewStateIdleDESlideToConfirmViewStateUpdatingDESlideToConfirmViewStateCompleted。要通知任何状态变化,您可以设置三个块:idleBlockupdateBlock(会发送完成百分比值)和 completeBlock 属性。

默认情况下,滑块将停在视图的左端,此时它处于空闲状态。当用户向任意方向滑动滑块时,滑块将处于更新状态。

如果用户在将滑块移动到完成位置之前取消手势,则视图将自动将滑块动画回空闲位置--在此动画期间,滑块将仍然处于更新状态,但不会调用更新块。一旦动画完成,就会调用空闲块。

最后,如果用户完成了滑动手势并成功将拇指移动到视图的最右边,拇指将进入完成状态。如果resetsWhenCompleted == YES,则会有一个动画将拇指移回空闲位置。对于这个动画,拇指将处于更新状态但不会调用更新块。一旦这个动画完成,将会调用空闲块。

示例

-(void)someMethod {
    self.slideToConfirmView.idleBlock = ^(DESlideToConfirmView *slideView) {
        // do something when the widget is idled
    };

    self.slideToConfirmView.updateBlock = ^(DESlideToConfirmView *slideView, float percentage) {
        // do something when the widget is updating, e.g. updating the color or opacity of an item as the user approaches the confirmation region
    };

    self.slideToConfirmView.completeBlock = ^(DESlideToConfirmView *slideView) {
        // do something when the user has triggered a confirmation
    };
}

动画

DESlideToConfirmView也提供了一些可调整的动画属性。

如果用户未能将拇指拖动到完成状态,拇指将自动回到空闲状态。您可以使用resetAnimationDuration属性来设置该动画的持续时间。

您还可以选择在用户完成确认时是否让小工具重置到空闲状态。要设置该值,请使用resetsWhenCompleted属性。如果设置为YES,则resetAnimationDuration将指定重置动画的持续时间。

如果确实希望小工具在手势完成时重置,您可以设置一个延迟,使拇指首先停留在最右边,然后再回到空闲位置。使用completionResetDelay属性来修改此值。