| | |
| | | #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; //画线的宽度 |
| | |
| | | @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 |
| | |
| | | ///根据大小来设置圆角 |
| | | 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; |
| | |
| | | } |
| | | - (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; |
| | | } |
| | | } |
| | | } |
| | | |
| | |
| | | @property (nonatomic, strong) NSMutableArray <SSGestureLockKeyView *> *selectedKeyViewArray; |
| | | @property (nonatomic, assign) CGPoint movePoint; |
| | | @property (nonatomic, strong) CAShapeLayer *drawLayer; |
| | | @property (nonatomic, assign) BOOL isSolidType; //是否为实心圆点的手势解锁类型 |
| | | |
| | | @end |
| | | |
| | |
| | | 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]; |
| | |
| | | */ |
| | | -(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 |