使用CAGradientLayer时的内存错误

And*_*nov 0 memory-management objective-c quartz-graphics ios

我正在使用CAGradientLayer创建一个背景图层,如本问题的答案中所述:UIView和UILabels上的渐变在iPhone上

但是,当我使用此代码时,我得到一个exc_bad_access错误,引用了CGColorSpaceGetModel.

UILabel *headerText = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, tableView.bounds.size.width -10, 18)];    

CAGradientLayer *gradient = [CAGradientLayer layer];

gradient.bounds = headerText.bounds;

UIColor *topColor = [[UIColor alloc] initWithRed:0.5647 green:0.6235 blue:0.6667 alpha:1.0];

UIColor *bottomColor = [[UIColor alloc] initWithRed:0.7216 green:0.7569 blue:0.7843 alpha:1.0];

NSArray *gradientColors = [[NSArray alloc] initWithObjects:topColor, bottomColor, nil];

gradient.colors = gradientColors;

[headerText.layer insertSublayer:gradient atIndex:0];
Run Code Online (Sandbox Code Playgroud)

知道什么可能导致这个错误?

Sim*_*Lee 6

你需要使用CGColorRefsUIColor...有一个属性UIColor来获得CGColorRef....

NSArray *gradientColors = [[NSArray alloc] initWithObjects:(id)topColor.CGColor, (id)bottomColor.CGColor, nil];
Run Code Online (Sandbox Code Playgroud)

  • 我希望,你的意思是"作为维京人...";) (3认同)