Ios 黑到白的径向梯度是给整个黑屏
它应该是非常简单的创建一个黑色到白色的径向梯度使用核心图形,但即使经过多次尝试,我也无法找出我的错误 我想要这样的东西: 这是我的代码:Ios 黑到白的径向梯度是给整个黑屏,ios,objective-c,core-graphics,radial-gradients,cggradientref,Ios,Objective C,Core Graphics,Radial Gradients,Cggradientref,它应该是非常简单的创建一个黑色到白色的径向梯度使用核心图形,但即使经过多次尝试,我也无法找出我的错误 我想要这样的东西: 这是我的代码: CGFloat radius = shapeRect.size.width/2.0; CGPoint center = CGPointMake(shapeRect.origin.x+shapeRect.size.width/2, shapeRect.origin.y+shapeRect.size.height/2); CGColorSpaceRef col
CGFloat radius = shapeRect.size.width/2.0;
CGPoint center = CGPointMake(shapeRect.origin.x+shapeRect.size.width/2, shapeRect.origin.y+shapeRect.size.height/2);
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceGray();
CGContextRef context = CGBitmapContextCreate(NULL, shapeRect.size.width, shapeRect.size.height, 8, shapeRect.size.width*4, colorSpace, kCGImageAlphaNone);
CGFloat components[] = {0.0, 1.0};
CGFloat locations[] = {0.0, 1.0};
CGGradientRef gradient = CGGradientCreateWithColorComponents(colorSpace, components, locations, 2);
CGContextDrawRadialGradient(context, gradient, center, 10, center, radius, 0);
CGImageRef img = CGBitmapContextCreateImage(context);
[maskedView setImage:[UIImage imageWithCGImage:img]];
CGGradientRelease(gradient);
CGContextRelease(context);
CGColorSpaceRelease(colorSpace);
这里有self.view界限
我得到一个完整的黑色屏幕,没有梯度作为输出。
我正在使用iPhone7模拟器
你的建议可以挽救我的生命
谢谢。请检查此片段。您可以更改
组件
和位置
值,以获得所需内容并了解图形的工作方式。请参阅CGGradientCreateWithColorComponents
结果:
#import "TestView.h"
@implementation TestView {
CGGradientRef _gradient;
}
-(void)drawRect:(CGRect)rect
{
CGFloat radius = self.frame.size.width / 2.0;
CGPoint center = CGPointMake(CGRectGetMidX(self.bounds), CGRectGetMidY(self.bounds));
CGContextRef context = UIGraphicsGetCurrentContext();
CGGradientRef gradient = [self createGradient];
CGContextDrawRadialGradient(context, gradient, center, 10, center, radius, kCGGradientDrawsBeforeStartLocation);
}
-(CGGradientRef)createGradient
{
if (!_gradient) {
CGFloat components[] = { 0.0, 1.0, 0.5, 0.5, 1.0, 0.3 };
CGFloat locations[] = { 0.0, 0.6, 1.0 };
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceGray();
_gradient = CGGradientCreateWithColorComponents(colorSpace, components, locations, 3);
CGColorSpaceRelease(colorSpace);
}
return _gradient;
}
- (void)layoutSubviews
{
self.backgroundColor = [UIColor whiteColor];
self.layer.borderColor = [UIColor lightGrayColor].CGColor;
self.layer.borderWidth = 1.;
}
@end