更改CGRect或覆盖CGRect

时间:2016-03-17 13:24:49

标签: ios radial-gradients

我在石英中绘制径向渐变。 我创建了一个新文件,并将代码放在drawRect中作为

CGContextRef ctx = UIGraphicsGetCurrentContext();

//Draw the gray Gradient

CGFloat BGLocations[2] = { 0.0, 1.0 };
CGFloat BgComponents[8] = { 0.25, 0.25, 0.25 , 1.0,  // Start color
   0.11, 0.11, 0.11, 1.0 }; // Mid color and End color
CGColorSpaceRef BgRGBColorspace = CGColorSpaceCreateDeviceRGB();
CGGradientRef bgRadialGradient = CGGradientCreateWithColorComponents(BgRGBColorspace, BgComponents, BGLocations, 2);


CGPoint startBg = CGPointMake(250, 250); 
CGFloat endRadius= 250;


CGContextDrawRadialGradient(ctx, bgRadialGradient, startBg, 0, startBg, endRadius, kCGGradientDrawsAfterEndLocation);
CGColorSpaceRelease(BgRGBColorspace);
CGGradientRelease(bgRadialGradient);

现在我正在制作UIView并使用website创建的RadialGradientView对其进行初始化,但我需要根据不同的实现更改endRadius

有没有办法做到这一点。

我正在使用Frame初始化UIView。

UIView* backgroundView = [[UIView alloc] initWithFrame: CGRectMake(0, 0, [UIScreen mainScreen].bounds.size.width, [UIScreen mainScreen].bounds.size.height)];

    UIView* gradientView = [[RadialGradientView alloc] initWithFrame: backgroundView.bounds];

因此,当我尝试访问gradientView的endRadius属性时,它没有显示出来。

1 个答案:

答案 0 :(得分:0)

endRadius声明为子类yourView.h文件中的属性

@property(assign) CGFloat endRadius;

您可以访问此属性,如:

   yourView.endRadius=40;

并在代码中更改此行:

CGContextDrawRadialGradient(ctx, bgRadialGradient, startBg, 0, startBg, endRadius, kCGGradientDrawsAfterEndLocation);

CGContextDrawRadialGradient(ctx, bgRadialGradient, startBg, 0, startBg, self.endRadius, kCGGradientDrawsAfterEndLocation);

CGContextDrawRadialGradient(ctx, bgRadialGradient, startBg, 0, startBg, _endRadius, kCGGradientDrawsAfterEndLocation);