wxr
2020-07-06 23c075a9c27946773feccf05abc90489a6bf5203
HDLWidgetLibrary/HDLWidgetLibrary/GestureLockView/HDLGestureLockView.m
@@ -13,9 +13,9 @@
#define SSGestureLock_SelectedButtonSize CGSizeMake(60,60)//选择后按钮的大小
#define SSGestureLock_SelectedLineColor HEXCOLOR(0xFC744B)//选择时候线的颜色
#define SSGestureLock_SelectedErrorLineColor HEXCOLOR(0xFF0000) //选择后错误线的颜色
#define SSGestureLock_NomarlColor HEXCOLOR(0xD5DBE8)
//#define SSGestureLock_NomarlColor HEXCOLOR(0xD5DBE8)
#define SSGestureLock_BorderColor HEXCOLOR(0x818181)
#define SSGestureLock_NomarlColor HEXCOLOR(0xC0C7D4)
CGFloat const SSGestureLock_DrawLineWidth  = 2; //画线的宽度
@@ -39,6 +39,10 @@
@property (nonatomic, strong) UIColor *errorColor;
@property (nonatomic, strong) UIColor *normalColor;
@property (nonatomic, strong) UIColor *selectedColor;
@property (nonatomic, strong) UIColor *selectedColor_Alpha;
@property (nonatomic, strong) UIColor *errorColor_Alpha;
@property (nonatomic, assign) BOOL isSolidType;
@end
@implementation SSGestureLockKeyView
@@ -60,19 +64,26 @@
    ///根据大小来设置圆角
    self.layer.cornerRadius = self.frame.size.height/2;
    self.layer.masksToBounds = true;
    self.layer.borderWidth = 1.0f;
    self.layer.borderColor = SSGestureLock_BorderColor.CGColor;
//    self.layer.borderWidth = 1.0f;
//    self.layer.borderColor = SSGestureLock_BorderColor.CGColor;
    
    CGFloat smallView_x = CGRectGetWidth(self.frame)*1/3;
    CGFloat smallView_y = CGRectGetWidth(self.frame)*1/3;
    CGFloat smallView_width = CGRectGetWidth(self.frame)*1/3;
    self.smallView.frame = CGRectMake(smallView_x, smallView_y, smallView_width, smallView_width);
    self.smallView.layer.cornerRadius = self.smallView.frame.size.height/2;
    if(_isSolidType){
        self.smallView.backgroundColor = self.normalColor;
    }else{
        self.layer.borderWidth = 1.0f;
        self.layer.borderColor = SSGestureLock_BorderColor.CGColor;
    }
}
- (void)setErrorColor:(UIColor *)errorColor{
    _errorColor = errorColor;
    _errorColor_Alpha = [self getNewColorWith:errorColor newAlpha:0.2F];
}
- (void)setNormalColor:(UIColor *)normalColor{
    _normalColor = normalColor;
@@ -80,25 +91,58 @@
}
- (void)setSelectedColor:(UIColor *)selectedColor{
    _selectedColor = selectedColor;
    _selectedColor_Alpha = [self getNewColorWith:selectedColor newAlpha:0.2F];
}
// 改变UIColor的Alpha
- (UIColor *)getNewColorWith:(UIColor *)color newAlpha:(float)newAlpha{
    CGFloat red = 0.0;
    CGFloat green = 0.0;
    CGFloat blue = 0.0;
    CGFloat alpha = 0.0;
    [color getRed:&red green:&green blue:&blue alpha:&alpha];
    UIColor *newColor = [UIColor colorWithRed:red green:green blue:blue alpha:newAlpha];
    return newColor;
}
- (void)setKeyType:(SSGestureLockKeyType)keyType{
    _keyType = keyType;
    if (_keyType == SSGestureLockKeyNormalType) {
        //        self.backgroundColor = [UIColor clearColor];
        self.smallView.backgroundColor = [UIColor clearColor];
        self.layer.borderColor = SSGestureLock_BorderColor.CGColor;
    }
    if (_keyType == SSGestureLockKeySelectedType) {
        //        self.backgroundColor = self.normalColor;
        self.smallView.backgroundColor = self.selectedColor;
        self.layer.borderColor = self.selectedColor.CGColor;
    }
    
    if (_keyType == SSGestureLockKeyErrorType) {
        //        self.backgroundColor = self.normalColor;
        self.smallView.backgroundColor = self.errorColor;
        self.layer.borderColor = self.errorColor.CGColor;
    if(!_isSolidType){
        if (_keyType == SSGestureLockKeyNormalType) {
            //        self.backgroundColor = [UIColor clearColor];
            self.smallView.backgroundColor = [UIColor clearColor];
            self.layer.borderColor = SSGestureLock_BorderColor.CGColor;
        }
        if (_keyType == SSGestureLockKeySelectedType) {
            //        self.backgroundColor = self.normalColor;
            self.smallView.backgroundColor = self.selectedColor;
            self.layer.borderColor = self.selectedColor.CGColor;
        }
        if (_keyType == SSGestureLockKeyErrorType) {
            //        self.backgroundColor = self.normalColor;
            self.smallView.backgroundColor = self.errorColor;
            self.layer.borderColor = self.errorColor.CGColor;
        }
    }else{
        if (_keyType == SSGestureLockKeyNormalType) {
            self.smallView.backgroundColor = self.normalColor;
            self.backgroundColor =  [UIColor clearColor];
            //        self.layer.borderColor = SSOnGestureLock_BorderColor.CGColor;
        }
        if (_keyType == SSGestureLockKeySelectedType) {
            self.smallView.backgroundColor = self.selectedColor;
            //        self.layer.borderColor = self.selectedColor.CGColor;
            self.backgroundColor = self.selectedColor_Alpha;
        }
        if (_keyType == SSGestureLockKeyErrorType) {
            self.smallView.backgroundColor = self.errorColor;
            self.backgroundColor = self.errorColor_Alpha;
            //        self.layer.borderColor = self.errorColor.CGColor;
        }
    }
}
@@ -110,6 +154,7 @@
@property (nonatomic, strong) NSMutableArray <SSGestureLockKeyView *> *selectedKeyViewArray;
@property (nonatomic, assign) CGPoint movePoint;
@property (nonatomic, strong) CAShapeLayer *drawLayer;
@property (nonatomic, assign) BOOL isSolidType; //是否为实心圆点的手势解锁类型
@end
@@ -211,6 +256,7 @@
        keyView.errorColor = self.errorLineColor;
        keyView.selectedColor = self.selectedLineColor;
        keyView.normalColor = self.normalColor;
        keyView.isSolidType = self.isSolidType;
        keyView.tag = i+1;
        [self addSubview:keyView];
        [self.keyViewArray  addObject:keyView];
@@ -356,7 +402,33 @@
 */
-(void)initWithFrameLockView:(CGRect) mCGRect{
    self.frame = mCGRect;
//    [self refreshFrame];
    //    [self refreshFrame];
        int mSpace = self.frame.size.width/(2*SSGestureLock_EachNum - 1);
        self.horizontalSpace = mSpace;
        self.verticalSpace = mSpace;
    ////    [self refreshFrame];
}
/// 2020-06-17
/// 设置实心模式
/// @param isSolidType 是否
-(void)setSolidType:(BOOL)isSolidType{
    self.isSolidType = isSolidType;
    [self resetViews];
}
/// 重置view
- (void)resetViews{
    //移除所有子view
    for(UIView *view in [self subviews])
    {
        [view removeFromSuperview];
    }
    [_keyViewArray removeAllObjects];
    [self setViews];
}
@end