- Fix dealloc crash

This commit is contained in:
giuseppenuc committed 2016-04-05 11:19:35 +02:00
1 parent 49e429c393
commit 52ac833f7c
3 files changed
+32 -41

No files matched your search

+7 -40
View File
@@ -9,6 +9,8 @@
#import "GradientButton.h"
#import "PureLayout.h"
static char ClassNameKVOContext = 0;
@interface GradientButton()
@property (nonatomic, strong) CAGradientLayer *gradientLayer;
@@ -16,8 +18,6 @@
@property (nonatomic, strong) NSMutableArray *cgColors;
@property (nonatomic) CGPoint startPoint;
@property (nonatomic) BOOL didUpdateConstraints;
@property (nonatomic, strong) UIView *container;
@property (nonatomic, assign) BOOL didSetupConstraints;
@end
@@ -30,12 +30,6 @@
_colors = [[NSMutableArray alloc] init];
_cgColors = [[NSMutableArray alloc] init];
_container = [UIView newAutoLayoutView];
[_container setBackgroundColor:[UIColor clearColor]];
[_container setAlpha:0];
[self addSubview:_container];
[_container addObserver:self forKeyPath:@"bounds" options:0 context:nil];
}
return self;
}
@@ -45,12 +39,6 @@
if (self) {
_colors = [[NSMutableArray alloc] init];
_cgColors = [[NSMutableArray alloc] init];
_container = [UIView newAutoLayoutView];
[_container setBackgroundColor:[UIColor clearColor]];
[_container setAlpha:0];
[self addSubview:_container];
[_container addObserver:self forKeyPath:@"bounds" options:0 context:nil];
}
return self;
}
@@ -60,12 +48,6 @@
if (self) {
_colors = [[NSMutableArray alloc] init];
_cgColors = [[NSMutableArray alloc] init];
_container = [[UIView alloc] initWithFrame:CGRectMake(0,0,frame.size.width,frame.size.height)];
[_container setBackgroundColor:[UIColor clearColor]];
[_container setAlpha:0];
[self addSubview:_container];
[_container addObserver:self forKeyPath:@"bounds" options:0 context:nil];
}
return self;
}
@@ -109,19 +91,10 @@
}
}
- (void) updateConstraints {
[super updateConstraints];
if (!self.didSetupConstraints) {
[_container autoPinEdgesToSuperviewEdges];
[_container autoAlignAxisToSuperviewAxis:ALAxisHorizontal];
[_container autoAlignAxisToSuperviewAxis:ALAxisVertical];
}
}
- (void) setFrame:(CGRect)frame {
[super setFrame:frame];
[_container setFrame:CGRectMake(0,0,frame.size.width,frame.size.height)];
dispatch_async(dispatch_get_main_queue(), ^{
if (_gradientLayer) {
[self setbackgroundLayerWithColors:_colors startPoint:_startPoint];
@@ -141,20 +114,14 @@
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
{
if (object == self && [keyPath isEqualToString:@"bounds"]) {
if (context == ClassNameKVOContext && object == self && [keyPath isEqualToString:@"bounds"]) {
if(_gradientLayer) {
dispatch_async(dispatch_get_main_queue(), ^{
[self setbackgroundLayerWithColors:_colors startPoint:_startPoint];
});
[self setbackgroundLayerWithColors:_colors startPoint:_startPoint];
}
}
}
- (void) dealloc {
[_container removeObserver:self forKeyPath:@"bounds"];
}
@end