Ios CAGradientLayer显示为纯色

Ios CAGradientLayer显示为纯色,ios,core-animation,Ios,Core Animation,我试图在视图上设置渐变背景,但下面的代码使UIView显示为纯黑色。如果我将白色更改为绿色,渐变将正确显示。将图层的背景色更改为绿色将使视图显示为纯绿色 我的猜测是,我正在处理某种透明度问题,但我不知道如何解决它 CAGradientLayer *gradientLayer = [CAGradientLayer layer]; gradientLayer.colors = [NSArray arrayWithObjects:

我试图在视图上设置渐变背景,但下面的代码使UIView显示为纯黑色。如果我将白色更改为绿色,渐变将正确显示。将图层的背景色更改为绿色将使视图显示为纯绿色

我的猜测是,我正在处理某种透明度问题,但我不知道如何解决它

CAGradientLayer *gradientLayer = [CAGradientLayer layer];
gradientLayer.colors = [NSArray arrayWithObjects:
                                     (id)[[UIColor whiteColor] CGColor],
                                     (id)[[UIColor blackColor] CGColor], nil];
gradientLayer.frame = CGRectMake(0, 0, 1, someView.frame.size.height);

UIGraphicsBeginImageContext(CGSizeMake(1, someView.frame.size.height));
[gradientLayer renderInContext: UIGraphicsGetCurrentContext()];

UIImage *image = UIGraphicsGetImageFromCurrentImageContext();

UIGraphicsEndImageContext();

someView.backgroundColor = [UIColor colorWithPatternImage: image];

您的白色和黑色在灰度颜色空间中。尝试在RGB颜色空间中制作:

gradientLayer.colors = @[
    (id)[UIColor colorWithRed:0 green:0 blue:0 alpha:1].CGColor,
    (id)[UIColor colorWithRed:1 green:1 blue:1 alpha:1].CGColor
];
这会解决你的问题,虽然我不确定这背后的石英力学