【发布时间】:2011-09-25 17:28:33
【问题描述】:
我是 Xcode 和 iOS 开发的新手。我正在尝试将渐变绘制到图层中,以便可以在视图中重复绘制该图层。这个渐变形成了视图的背景,我在这个渐变上做了一些绘制。但是当我在我的图层中绘制一个渐变,然后在我的视图的上下文中绘制它时,它不会绘制渐变。我已经尝试调试代码,但一切似乎都很好。粘贴以下相关代码: 我在开始时创建了 gradientLayer。
CGContextRef context = UIGraphicsGetCurrentContext();
CGRect myRect = self.bounds;
CGGradientRef myGradient;
CGColorSpaceRef rgb = CGColorSpaceCreateDeviceRGB();
CGFloat colors[] =
{
204.0 / 255.0, 224.0 / 255.0, 244.0 / 255.0, 1.00,
100 / 255.0, 200 / 255.0, 50 / 255.0, 1.00,
0, 0, 0, 1.00,
};
myGradient = CGGradientCreateWithColorComponents(rgb, colors, NULL, sizeof(colors)/(sizeof(colors[0])*4));
CGColorSpaceRelease(rgb);
CGContextRef layerContext = CGLayerGetContext(gradientLayer);
CGPoint start, end;
CGRect clip = CGContextGetClipBoundingBox(layerContext);
start = getStartPoint(clip);
end = getEndPoint(clip);
CGContextDrawLinearGradient(layerContext, myGradient, start, end, 0);
//CGContextSetRGBFillColor (layerContext, red / 255.0, green / 255.0, blue / 255.0, 1);
//CGContextFillRect (layerContext, clip);
我在我的类被实例化时调用这个函数。然后在我的drawRect方法中反复绘制这一层。
CGRect rect = self.bounds;
CGContextSaveGState(context);
CGContextDrawLayerInRect(context, rect, gradientLayer);
CGContextSaveGState(context);
我可以直接在 drawRect 中绘制相同的渐变,但是在绘制到图层然后在 drawRect 中时无法这样做(尝试优化绘图)。
【问题讨论】: