From 584b25245b694521c5bee654c0b8ca7ac328ed6c Mon Sep 17 00:00:00 2001 From: Andreas Linde Date: Sat, 17 Aug 2013 17:43:40 +0200 Subject: [PATCH] Adjust button border color when it is deactivated on iOS 7 --- Classes/BITStoreButton.m | 38 +++++++++++++++++++++++++++++--------- 1 file changed, 29 insertions(+), 9 deletions(-) diff --git a/Classes/BITStoreButton.m b/Classes/BITStoreButton.m index 0fc3e14792..08fab19693 100644 --- a/Classes/BITStoreButton.m +++ b/Classes/BITStoreButton.m @@ -58,7 +58,10 @@ @end -@implementation BITStoreButton +@implementation BITStoreButton { + CALayer *_defaultBorderLayer; + CALayer *_inActiveBorderLayer; +} #pragma mark - private @@ -94,9 +97,15 @@ [self setTitleColor:BIT_RGBCOLOR(106, 106, 106) forState:UIControlStateNormal]; } else { [self setTitleColor:BIT_RGBCOLOR(35, 111, 251) forState:UIControlStateNormal]; + [_defaultBorderLayer setHidden:NO]; + [_inActiveBorderLayer setHidden:YES]; } } else { [self setTitleColor:BIT_RGBCOLOR(148, 150, 151) forState:UIControlStateNormal]; + if (self.style == BITStoreButtonStyleOS7) { + [_defaultBorderLayer setHidden:YES]; + [_inActiveBorderLayer setHidden:NO]; + } } // calculate optimal new size @@ -176,17 +185,28 @@ } // border layers for more sex! - CALayer *borderLayer = [CALayer layer]; + _defaultBorderLayer = [CALayer layer]; if (style == BITStoreButtonStyleDefault) { - borderLayer.borderColor = [BIT_RGBCOLOR(191, 191, 191) CGColor]; + _defaultBorderLayer.borderColor = [BIT_RGBCOLOR(191, 191, 191) CGColor]; } else { - borderLayer.borderColor = [BIT_RGBCOLOR(35, 111, 251) CGColor]; + _defaultBorderLayer.borderColor = [BIT_RGBCOLOR(35, 111, 251) CGColor]; + } + _defaultBorderLayer.borderWidth = 1.0; + _defaultBorderLayer.frame = CGRectMake(0.0, 0.0, CGRectGetWidth(frame), CGRectGetHeight(frame)); + _defaultBorderLayer.cornerRadius = 2.5; + _defaultBorderLayer.needsDisplayOnBoundsChange = YES; + [self.layer addSublayer:_defaultBorderLayer]; + + if (style == BITStoreButtonStyleOS7) { + _inActiveBorderLayer = [CALayer layer]; + _inActiveBorderLayer.borderColor = [BIT_RGBCOLOR(148, 150, 151) CGColor]; + _inActiveBorderLayer.borderWidth = 1.0; + _inActiveBorderLayer.frame = CGRectMake(0.0, 0.0, CGRectGetWidth(frame), CGRectGetHeight(frame)); + _inActiveBorderLayer.cornerRadius = 2.5; + _inActiveBorderLayer.needsDisplayOnBoundsChange = YES; + [self.layer addSublayer:_inActiveBorderLayer]; + [_inActiveBorderLayer setHidden:YES]; } - borderLayer.borderWidth = 1.0; - borderLayer.frame = CGRectMake(0.0, 0.0, CGRectGetWidth(frame), CGRectGetHeight(frame)); - borderLayer.cornerRadius = 2.5; - borderLayer.needsDisplayOnBoundsChange = YES; - [self.layer addSublayer:borderLayer]; } return self; }