是否可以在图形的两侧应用垂直渐变和水平渐变淡出?
这是一张图片,展示了我在说什么。您可以看到后面的图形具有areaFill的垂直CPTGradient填充。
代码大致如下:
CPTGradient *areaGradient = [CPTGradient gradientWithBeginningColor:[[CPTColor whiteColor] colorWithAlphaComponent:.5f] endingColor:[[CPTColor whiteColor] colorWithAlphaComponent:.1f]];
areaGradient.angle = -90.0;
CPTFill *areaGradientFill = [CPTFill fillWithGradient:areaGradient];
tempPlot.areaFill = areaGradientFill;
tempPlot.areaBaseValue = CPTDecimalFromDouble(0.0);
对于图的边缘,我会做这样的事情:
CPTGradient *gradient2 = [[CPTGradient alloc] init];
gradient2 = [gradient2 addColorStop:[CPTColor clearColor] atPosition:0.0];
gradient2 = [gradient2 addColorStop:[[CPTColor whiteColor] colorWithAlphaComponent:.5f] atPosition:.05];
gradient2 = [gradient2 addColorStop:[CPTColor clearColor] atPosition:.05];
gradient2 = [gradient2 addColorStop:[CPTColor clearColor] atPosition:1.];
gradient2.angle = 180.f;
tempPlot.areaFill2 = [CPTFill fillWithGradient:gradient2];
tempPlot.areaBaseValue2 = CPTDecimalFromDouble(0.0);
然而,问题是这与其他渐变没有很好的配合:
我怎样才能实现淡出'对情节两边的影响?
答案 0 :(得分:1)
我最终找到了答案。对于图表边缘的淡入淡出,我在主机视图上使用CAGradientLayer掩码,其中self.hostView
的类型为CPTGraphHostingView
CAGradientLayer *l = [CAGradientLayer layer];
l.frame = self.hostView.bounds;
l.colors = @[ (id)[UIColor clearColor].CGColor, (id)[UIColor whiteColor].CGColor,
(id)[UIColor whiteColor].CGColor, (id)[UIColor clearColor].CGColor ];
l.locations = @[ @0.f, @0.02f, @0.98f, @1.f ];
l.startPoint = CGPointMake(0.f, 0.5f);
l.endPoint = CGPointMake(1.0f, 0.5f);
self.hostView.layer.mask = l;