From 042ec191c478a743c27e7b688bc12dd1982fb791 Mon Sep 17 00:00:00 2001 From: george Date: Wed, 8 Jul 2015 23:08:47 +0800 Subject: [PATCH] Fix CLLockInfoView, it changes now --- .../UserInterfaceState.xcuserstate | Bin 0 -> 10359 bytes .../xcschemes/CoreLock.xcscheme | 112 ++++++++++++++++ .../xcschemes/xcschememanagement.plist | 27 ++++ CoreLock/CoreLock/Lib/View/CLLockInfoView.m | 124 ++++++++++++------ CoreLock/CoreLock/Lib/View/CLLockView.m | 4 +- 5 files changed, 225 insertions(+), 42 deletions(-) create mode 100644 CoreLock.xcodeproj/project.xcworkspace/xcuserdata/george.xcuserdatad/UserInterfaceState.xcuserstate create mode 100644 CoreLock.xcodeproj/xcuserdata/george.xcuserdatad/xcschemes/CoreLock.xcscheme create mode 100644 CoreLock.xcodeproj/xcuserdata/george.xcuserdatad/xcschemes/xcschememanagement.plist diff --git a/CoreLock.xcodeproj/project.xcworkspace/xcuserdata/george.xcuserdatad/UserInterfaceState.xcuserstate b/CoreLock.xcodeproj/project.xcworkspace/xcuserdata/george.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..493e2917e1efe6490ffdebe3d7806452ad47233c GIT binary patch literal 10359 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 literal 0 HcmV?d00001 diff --git a/CoreLock.xcodeproj/xcuserdata/george.xcuserdatad/xcschemes/CoreLock.xcscheme b/CoreLock.xcodeproj/xcuserdata/george.xcuserdatad/xcschemes/CoreLock.xcscheme new file mode 100644 index 0000000..09cd1ec --- /dev/null +++ b/CoreLock.xcodeproj/xcuserdata/george.xcuserdatad/xcschemes/CoreLock.xcscheme @@ -0,0 +1,112 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/CoreLock.xcodeproj/xcuserdata/george.xcuserdatad/xcschemes/xcschememanagement.plist b/CoreLock.xcodeproj/xcuserdata/george.xcuserdatad/xcschemes/xcschememanagement.plist new file mode 100644 index 0000000..572fe8a --- /dev/null +++ b/CoreLock.xcodeproj/xcuserdata/george.xcuserdatad/xcschemes/xcschememanagement.plist @@ -0,0 +1,27 @@ + + + + + SchemeUserState + + CoreLock.xcscheme + + orderHint + 0 + + + SuppressBuildableAutocreation + + 893F1FEB1AE68CF1009D6A35 + + primary + + + 893F20041AE68CF1009D6A35 + + primary + + + + + diff --git a/CoreLock/CoreLock/Lib/View/CLLockInfoView.m b/CoreLock/CoreLock/Lib/View/CLLockInfoView.m index bdd3d7b..0ab9c61 100644 --- a/CoreLock/CoreLock/Lib/View/CLLockInfoView.m +++ b/CoreLock/CoreLock/Lib/View/CLLockInfoView.m @@ -13,55 +13,97 @@ -@implementation CLLockInfoView +@implementation CLLockInfoView { + NSString *password; +} + +- (void)redrawRect:(CGRect)rect path:(CGMutablePathRef)pathM { + //获取上下文 + CGContextRef ctx = UIGraphicsGetCurrentContext(); + + //设置属性 + CGContextSetLineWidth(ctx, CoreLockArcLineW); + + //添加路径 + CGContextAddPath(ctx, pathM); + + //绘制路径 + CGContextStrokePath(ctx); + + //释放路径 + CGPathRelease(pathM); +} + +FOUNDATION_STATIC_INLINE CGMutablePathRef path(CGMutablePathRef pathM, NSUInteger i, CGFloat rectWH, CGFloat padding, CGFloat marginV) { + NSUInteger row = i % 3; + NSUInteger col = i / 3; + + CGFloat rectX = (rectWH + marginV) * row + padding; + + CGFloat rectY = (rectWH + marginV) * col + padding; + + CGRect rect = CGRectMake(rectX, rectY, rectWH, rectWH); + + CGPathAddEllipseInRect(pathM, NULL, rect); + + return pathM; +} + +- (CGMutablePathRef)plainPathWithRectWH:(CGFloat)rectWH marginV:(CGFloat)marginV padding:(CGFloat)padding { + CGMutablePathRef pathM =CGPathCreateMutable(); + for (NSUInteger i=0; i<9; i++) { + if (!password.length || [password rangeOfString:[NSString stringWithFormat:@"%lu", (unsigned long)i]].location == NSNotFound) { + path(pathM, i, rectWH, padding, marginV); + + [CoreLockCircleLineNormalColor set]; + } + } + + return pathM; +} + +- (CGMutablePathRef)highlightpathWithRectWH:(CGFloat)rectWH marginV:(CGFloat)marginV padding:(CGFloat)padding { + CGMutablePathRef pathM =CGPathCreateMutable(); + for (NSUInteger i=0; i<9; i++) { + + if (password.length && [password rangeOfString:[NSString stringWithFormat:@"%lu", (unsigned long)i]].location != NSNotFound) { + path(pathM, i, rectWH, padding, marginV); + + [CoreLockCircleLineSelectedColor set]; + } + + } + + return pathM; +} -(void)drawRect:(CGRect)rect{ - - //获取上下文 - CGContextRef ctx = UIGraphicsGetCurrentContext(); - - //设置属性 - CGContextSetLineWidth(ctx, CoreLockArcLineW); - - //设置线条颜色 - [CoreLockCircleLineNormalColor set]; - - //新建路径 - CGMutablePathRef pathM =CGPathCreateMutable(); - - CGFloat marginV = 3.f; - CGFloat padding = 1.0f; - CGFloat rectWH = (rect.size.width - marginV * 2 - padding*2) / 3; - - //添加圆形路径 - for (NSUInteger i=0; i<9; i++) { - - NSUInteger row = i % 3; - NSUInteger col = i / 3; - - CGFloat rectX = (rectWH + marginV) * row + padding; - - CGFloat rectY = (rectWH + marginV) * col + padding; - - CGRect rect = CGRectMake(rectX, rectY, rectWH, rectWH); - - CGPathAddEllipseInRect(pathM, NULL, rect); - } - - //添加路径 - CGContextAddPath(ctx, pathM); - - //绘制路径 - CGContextStrokePath(ctx); - - //释放路径 - CGPathRelease(pathM); + [super drawRect:rect]; + + CGFloat marginV = 3.f; + CGFloat padding = 1.0f; + CGFloat rectWH = (rect.size.width - marginV * 2 - padding*2) / 3; + + [self redrawRect:rect path:[self plainPathWithRectWH:rectWH marginV:marginV padding:padding]]; + [self redrawRect:rect path:[self highlightpathWithRectWH:rectWH marginV:marginV padding:padding]]; } +- (void)redraw:(NSNotification *)notif { + password = notif.userInfo[@"CLLockView"]; + [self setNeedsDisplay]; +} +- (void)awakeFromNib { + [super awakeFromNib]; + [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(redraw:) name:@"CLLockView" object:nil]; +} + +- (void)dealloc { + [[NSNotificationCenter defaultCenter] removeObserver:self]; +} diff --git a/CoreLock/CoreLock/Lib/View/CLLockView.m b/CoreLock/CoreLock/Lib/View/CLLockView.m index 60dd739..a91ac10 100644 --- a/CoreLock/CoreLock/Lib/View/CLLockView.m +++ b/CoreLock/CoreLock/Lib/View/CLLockView.m @@ -369,7 +369,9 @@ -(void)lockHandle:(NSSet *)touches{ //记录密码 [self.pwdM appendFormat:@"%@",@(itemView.tag)]; - + + //通知InfoView + [[NSNotificationCenter defaultCenter] postNotificationName:@"CLLockView" object:nil userInfo:@{@"CLLockView":self.pwdM}]; //计算方向:每添加一次itemView就计算一次 [self calDirect];