我正在编写一个简单红色渐变的按钮背景,它在高度小于 100 时有效,但如果按钮大于该值,它将停止加载渐变,我不知道为什么。我正在使用 PaintCode(到目前为止,它的作用就像一个魅力)来绘制代码,然后我将渐变的大小从 更改为[UIBezierPath bezierPathWithRoundedRect: CGRectMake(0, 0, 240, 120) cornerRadius: 4];
,[UIBezierPath bezierPathWithRoundedRect: CGRectMake(0, 0, self.frame.size.width, self.frame.size.height) cornerRadius: 4];
因为按钮的大小在 4.5" 和 5" 设备之间变化。我正在使用具有相同代码的其他渐变减去其他按钮上的颜色,它们工作得很好。只有当高度大于 100 pts 时我才发现问题。知道有什么问题吗?
这是我正在使用的代码:
//// General Declarations
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
CGContextRef context = UIGraphicsGetCurrentContext();
//// Color Declarations
UIColor* lightRedColor = [UIColor colorWithRed: 1 green: 0.188 blue: 0.098 alpha: 1];
UIColor* darkRedColor = [UIColor colorWithRed: 0.812 green: 0.016 blue: 0.016 alpha: 1];
//// Gradient Declarations
NSArray* redGradientColors = [NSArray arrayWithObjects:
(id)lightRedColor.CGColor,
(id)[UIColor colorWithRed: 0.906 green: 0.102 blue: 0.057 alpha: 1].CGColor,
(id)darkRedColor.CGColor, nil];
CGFloat redGradientLocations[] = {0, 0.5, 1};
CGGradientRef redGradient = CGGradientCreateWithColors(colorSpace, (__bridge CFArrayRef)redGradientColors, redGradientLocations);
//// Rounded Rectangle Drawing
UIBezierPath* roundedRectanglePath = [UIBezierPath bezierPathWithRoundedRect: CGRectMake(0, 0, self.frame.size.width, self.frame.size.height) cornerRadius: 4];
CGContextSaveGState(context);
[roundedRectanglePath addClip];
CGContextDrawLinearGradient(context, redGradient, CGPointMake(120, 0), CGPointMake(120, 120), 0);
CGContextRestoreGState(context);
//// Cleanup
CGGradientRelease(redGradient);
CGColorSpaceRelease(colorSpace);
编辑:这是按钮的屏幕截图: