0

我在故事板控制器中有一个视图,它扩展了我的自定义 UIView,当我尝试在 drawRect 中绘制渐变时,它在通过 XCode 加载到设备/sim 时显示正常,但是当我在上传到 iTunes Connect 后通过 TestFlight 安装时,渐变不是首先出现(显示黑色背景) - 它需要旋转设备并且渐变再次显示正常。什么可能导致这种行为?

- (void)drawRect:(CGRect)rect {
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
CGContextRef context = UIGraphicsGetCurrentContext();

NSArray *gradientColors = [NSArray arrayWithObjects:
                           (id)[[self colorWithHexString:@"FF7542"]CGColor],
                           (id)[[self colorWithHexString:@"FF7542"]CGColor],
                           (id)[[self colorWithHexString:@"FFC0A1"]CGColor],
                           nil];


CGFloat gradientLocations[] = {0, 1};
CGGradientRef gradient = CGGradientCreateWithColors(colorSpace, (__bridge CFArrayRef) gradientColors, gradientLocations);

CGPoint startPoint = CGPointMake(CGRectGetMidX(rect), CGRectGetMinY(rect));
CGPoint endPoint = CGPointMake(CGRectGetMidX(rect), CGRectGetMaxY(rect));

CGContextDrawLinearGradient(context, gradient, startPoint, endPoint, 0);
CGGradientRelease(gradient);
CGColorSpaceRelease(colorSpace);

NSShadow *shadow = [[NSShadow alloc] init];
[shadow setShadowColor : BLACK_SHADOW];
[shadow setShadowOffset : CGSizeMake (1.0, 1.0)];
}
4

1 回答 1

0

我通过另一种方式创建我的渐变解决了这个问题,奇怪的是它在加载时首次显示而不需要旋转。

CGContextRef current_context = UIGraphicsGetCurrentContext();
CGContextSaveGState(current_context);

// Gradient
CGFloat locations[2] = {0.0, 1.0};
CGFloat components[8] = {1.00,0.75,0.63,1.0,1.00,0.46,0.26,1.0};
CGColorSpaceRef colorspace = CGColorSpaceCreateDeviceRGB();
CGGradientRef gradient = CGGradientCreateWithColorComponents(colorspace, components, locations, 2);
CGPoint startPoint = CGPointMake(CGRectGetMidX(rect), CGRectGetMinY(rect));
CGPoint endPoint = CGPointMake(CGRectGetMidX(rect), CGRectGetMaxY(rect));
CGContextDrawLinearGradient(current_context, gradient, startPoint, endPoint, 0);
CGGradientRelease(gradient);
CGColorSpaceRelease(colorspace);
于 2017-03-14T09:36:18.287 回答