有几种方法可以实现您想要的。这里有两个例子: 请注意,这只是给你一个例子,你应该添加参数/颜色/等来得到你所追求的。希望这可以帮助。
1)直接在draw rect中绘制渐变。如果你想要额外的绘图,也可以在你的视图实现中调用 [super drawRect:rect]。
- (void)drawRect:(CGRect)rect {
CGPoint center = CGPointMake(CGRectGetMidX(self.bounds), CGRectGetMidY(self.bounds));
if (CGSizeEqualToSize(self.centerOffset, CGSizeZero) == NO) {
center.x += self.centerOffset.width;
center.y += self.centerOffset.height;
}
CGContextRef currentContext = UIGraphicsGetCurrentContext();
size_t num_locations = 2;
CGFloat locations[2] = { 0.0, 1.0 };
CGFloat components[8] = { 0.0, 0.0, 0.0, 0.5, // Start color
0.0, 0.0, 0.0, 0.7 }; // End color
CGColorSpaceRef rgbColorspace = CGColorSpaceCreateDeviceRGB();
CGGradientRef gradient = CGGradientCreateWithColorComponents(rgbColorspace, components, locations, num_locations);
CGGradientDrawingOptions options = kCGGradientDrawsBeforeStartLocation | kCGGradientDrawsAfterEndLocation;
CGFloat endRadius = [UIApplication sharedApplication].keyWindow.bounds.size.height / 2;
CGContextDrawRadialGradient(currentContext, gradient, center, 50.0f, center, endRadius, options);
CGGradientRelease(gradient);
CGColorSpaceRelease(rgbColorspace);
}
2)使用CAGradient层
UIColor *startEndColour = [UIColor redColor];
UIColor *middleColor = [UIColor blueColor];
NSArray *horizontalGradientColorsArray = [NSArray arrayWithObjects:(id)[startEndColour CGColor], (id)[middleColor CGColor],(id)[middleColor CGColor], (id)[startEndColour CGColor],nil];
UIView *horizontalGradient1View = [[UIView alloc] initWithFrame:CGRectMake(0.f, 0.f, self.bounds.size.width, 1.f)];
horizontalGradient1View.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleBottomMargin;
CAGradientLayer *horizontalGradient1 = [CAGradientLayer layer];
horizontalGradient1.frame = horizontalGradient1View.bounds;
horizontalGradient1.colors = horizontalGradientColorsArray;
horizontalGradient1.startPoint = CGPointMake(0, 0.5);
horizontalGradient1.endPoint = CGPointMake(1.0, 0.5);
[horizontalGradient1View.layer insertSublayer:horizontalGradient1 atIndex:0];
[self addSubview:horizontalGradient1View];
[horizontalGradient1View release];