2017-03-13 1 views
0

私のカスタムUIViewを拡張するストーリーボードコントローラのビューがあり、drawRectにグラデーションを描画しようとすると、XCode経由でデバイス/シムにロードするときにうまく表示されますが、TestFlight iTunesにアップロードした後グラデーションは最初に表示されません(黒い背景が表示されます) - デバイスの回転が必要で、グラデーションが再びうまく表示されます。この現象の原因は何ですか?TestFlight経由でロードするとIOSアプリケーションが異なる

- (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)]; 
} 

答えて

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); 
関連する問題