登录 立即注册
金钱:

Code4App-iOS开发-iOS 开源代码库-iOS代码实例搜索-iOS特效示例-iOS代码例子下载-Code4App.com

封装好的滑动解锁模块

[复制链接]
来自: wo2579722 分类: iOS精品源码 上传时间: 2016-9-22 08:49:03
Tag:滑动解锁 lock 手势交互 gesture lock lock

项目介绍:

HBLockSliderView


DEMO 直接下载:


最近要用到类似滑动解锁的控件,继承UISlider重写- (CGRect)trackRectForBounds:(CGRect)bounds改变Slider高度的方法坑太多,而且样式不好看,所以用UIView自己写了个,可自定义样式,还没有做太多优化,但基本不耗费太多性能。上图~


先来看看.h文件都能实现什么功能吧<( ̄︶ ̄)↗[GO!]

#import <UIKit/UIKit.h>
@class HBLockSliderView;
@protocol HBLockSliderDelegate <NSObject>
@optional
- (void)sliderValueChanging:(HBLockSliderView *)slider;
- (void)sliderEndValueChanged:(HBLockSliderView *)slider;
@end

@interface HBLockSliderView : UIView
@property (nonatomic, assign) CGFloat value;
@property (nonatomic, copy) NSString *text;
@property (nonatomic, strong)UIFont *font;
@property (nonatomic,strong) UIImage *thumbImage;
@property (nonatomic,strong) UIImage *finishImage;
@property (nonatomic, assign) BOOL thumbHidden;
/**
*  拖动后是否返回
*/
@property (nonatomic,assign) BOOL thumbBack;
@property (nonatomic, weak) id<HBLockSliderDelegate> delegate;
/**
*  设置滑动条进度
*  value取值0~1
*/
- (void)setSliderValue:(CGFloat)value;
/**
*  动画设置滑动条进度
*/
- (void)setSliderValue:(CGFloat)value animation:(BOOL)animation completion:(void(^)(BOOL finish))completion;
/**
*  设置滑动条颜色
*
*  @param backgroud  背景色
*  @param foreground 前景色
*  @param thumb      滑动控件颜色
*  @param border     边框色
*/
- (void)setColorForBackgroud:(UIColor *)backgroud foreground:(UIColor *)foreground thumb:(UIColor *)thumb border:(UIColor *)border textColor:(UIColor *)textColor;

/**
*  设置滑动控件的起始图片和完成图片(可选)
*
*  @param beginImage 启始图片
*  @param endImage   完成图片
*/
- (void)setThumbBeginImage:(UIImage *)beginImage finishImage:(UIImage *)finishImage;
/**
*  移除圆角和边框
*/
- (void)removeRoundCorners:(BOOL)corners border:(BOOL)border;

@end


slider由4个view叠加而成,层级依次是view(背景)->label->foregroundView->thumbImageView

@interface HBLockSliderView () {
    UILabel *_label;
    UIImageView *_thumbImageView;
    UIView *_foregroundView;
    ...
}


主要的实现原理:拖动thumb时,改变foregroundView的尺寸,使foregroundView始终紧贴thumb。通过触摸事件来获得touch的点,通过改点来改变foregroundView尺寸

- (void)touchesMoved:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{
    UITouch *touch = [touches anyObject];
    CGPoint point = [touch locationInView:self];
    [self fillForeGroundViewWithPoint:point];
    ...
    }
   
    - (void)fillForeGroundViewWithPoint:(CGPoint)point{
        CGPoint p = point;
        //修正
        p.x += thunmbW/2;
        if (p.x > kSliderW) {
            p.x = kSliderW;
        }
        if (p.x < 0) {
            p.x = 0;
        }
        self.value = p.x  / kSliderW;
        _foregroundView.frame = CGRectMake(0, 0, point.x, kSliderH);
        ...
        
}

.m文件中定义了一些宏,如圆角,线宽和默认颜色等,有需要的可以自行修改
完整的demo请点击Github
<( ̄︶ ̄)↗欢迎star欢迎follow~



相关源码推荐:

我来说两句
*滑动验证:
所有评论(67)
code4app热心网友 2016-9-22 13:22:15
淡定,淡定,淡定……
回复
code4app热心网友 2016-9-22 13:28:46
正需要啊,感谢楼主无私分享!
回复
code4app热心网友 2016-9-22 17:02:20
淡定,淡定,淡定……
回复
code4app热心网友 2016-9-23 07:57:50
强烈支持楼主ing……
回复
mkjhgfdsa123 2016-9-23 08:41:30
很给力,Code4App有你更精彩!
回复
code4app热心网友 2016-9-23 09:10:36
淡定,淡定,淡定……
回复
王颖博 2016-9-23 09:19:16
感谢分享,Code4App有你更精彩
回复
liujinfeng 2016-9-23 09:31:02
我只是路过打酱油的。
回复
code4app热心网友 2016-9-23 09:43:03
精华内容,楼主V5!
回复
提取码:  下载次数:151 状态:已购或VIP 售价:0(原价:10)金钱 下载权限:初级码农 
1465 0 151
联系我们
首页/微信公众账号投稿

帖子代码编辑/版权问题

QQ:435399051,742864542

如何获得代码达人称号?

代码贡献英雄榜
用户名 下载数
通过邮件订阅最新 Code4App 信息
上一条 /4 下一条
联系我们
关闭
合作电话:
13802416937
Email:
435399051@qq.com
商务市场合作/投稿
问题反馈及帮助
联系我们

广告投放| Github|申请友链|手机版|Code4App ( 粤ICP备15117877号-1 )

快速回复 返回顶部 返回列表