簡體   English   中英

更改CGRect或覆蓋CGRect

[英]Change CGRect or Override CGRect

我正在繪制石英的徑向漸變。 我創建了一個新文件,並將代碼放入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 ,並與初始化它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屬性時,它沒有顯示出來。

在您的子類yourView.h文件中,將endRadius聲明為一個屬性,如下所示:

@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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM