我正在阅读有关渐变的文档,我有点迷失了。 我有一个视图,在该视图中,我只想在rect(小于视图)中从下到上绘制一个简单的黑色到灰色的线性渐变。 如果没有子类化任何东西,我怎么能这样做(我读过很多需要子视图的东西)?
我正在寻找一种方法,就像我在各种平台上所做的一样简单。像(语言免费:-)):
blackcolor = MakeBlack();
whiteColor = MakeWhite();
startPoint = MakeStartPoint();
endPoint = MakeEndPoint();
onthisgraphicport = SetGraphicPort(self.view);
clippingRect = MakeClipRect();
DrawGradient(from:whiteColor, to:blackcolor, from:startPoint, to:endPoint, onthisgraphicport, intoThisRect:clippingRect);
感谢您的帮助。
答案 0 :(得分:5)
此代码段可能会有所帮助。我不久前在网上找到了这段代码。不幸的是,我忘记了网站,所以不确定是谁给予信任。
代码为白色到黑色渐变。只需根据需要更改矩形和颜色。
@interface MyView : UIView {
CGGradientRef _gradientRef;
}
@end
@implementation MyView
- (void) dealloc
{
[super dealloc];
}
- (id) initWithFrame:(CGRect)frame {
if ((self = [super initWithFrame:frame])) {
CGColorSpaceRef rgb = CGColorSpaceCreateDeviceRGB();
CGFloat colors[] =
{
1.0f, 1.0f, 1.0f, 1.0f,
0.0f, 0.0f, 0.0f, 1.0f,
};
_gradientRef = CGGradientCreateWithColorComponents(rgb, colors, NULL, sizeof(colors) / (sizeof(colors[0]) * 4));
CGColorSpaceRelease(rgb);
}
return self;
}
- (void) drawRect:(CGRect)rect {
CGContextRef context = UIGraphicsGetCurrentContext();
CGPoint start = rect.origin;
start.y = 0;
CGPoint end = CGPointMake(rect.origin.x, rect.size.height);
CGContextDrawLinearGradient(context, _gradientRef, start, end, kCGGradientDrawsBeforeStartLocation | kCGGradientDrawsAfterEndLocation);
[super drawRect:rect];
}
@end