Skip to content

Commit 47f2165

Browse files
committed
FIX: ensure gradient colors aren't nil before accessing
1 parent 7ea7685 commit 47f2165

File tree

1 file changed

+12
-7
lines changed

1 file changed

+12
-7
lines changed

URBSegmentedControl.m

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -790,9 +790,12 @@ - (UIImage *)selectedBackgroundImage {
790790
UIColor *segmentHighlight = [UIColor colorWithRed:1 green:1 blue:1 alpha:0.7];
791791

792792
// gradients
793-
NSArray *segmentGradientColors = @[(id)segmentGradientTopColor.CGColor, (id)segmentGradientBottomColor.CGColor];
794-
CGFloat segmentGradientLocations[] = {0, 1};
795-
CGGradientRef segmentGradient = CGGradientCreateWithColors(colorSpace, (__bridge CFArrayRef)segmentGradientColors, segmentGradientLocations);
793+
CGGradientRef segmentGradient = NULL;
794+
if (segmentGradientTopColor && segmentGradientBottomColor) {
795+
NSArray *segmentGradientColors = @[(id)segmentGradientTopColor.CGColor, (id)segmentGradientBottomColor.CGColor];
796+
CGFloat segmentGradientLocations[] = {0, 1};
797+
segmentGradient = CGGradientCreateWithColors(colorSpace, (__bridge CFArrayRef)segmentGradientColors, segmentGradientLocations);
798+
}
796799

797800
// shadows
798801
CGSize segmentHighlightOffset = CGSizeMake(0.1, 1.1);
@@ -813,10 +816,12 @@ - (UIImage *)selectedBackgroundImage {
813816
UIBezierPath *segmentBasePath = [UIBezierPath bezierPathWithRoundedRect:segmentBaseRect cornerRadius:radius];
814817
CGContextSaveGState(context);
815818
[segmentBasePath addClip];
816-
CGContextDrawLinearGradient(context, segmentGradient,
817-
CGPointMake(CGRectGetMidX(segmentBaseRect), CGRectGetMinY(segmentBaseRect)),
818-
CGPointMake(CGRectGetMidX(segmentBaseRect), CGRectGetMaxY(segmentBaseRect)),
819-
0);
819+
if (segmentGradient) {
820+
CGContextDrawLinearGradient(context, segmentGradient,
821+
CGPointMake(CGRectGetMidX(segmentBaseRect), CGRectGetMinY(segmentBaseRect)),
822+
CGPointMake(CGRectGetMidX(segmentBaseRect), CGRectGetMaxY(segmentBaseRect)),
823+
0);
824+
}
820825
CGContextRestoreGState(context);
821826

822827
// inner shadow

0 commit comments

Comments
 (0)