Ios 阴影不显示在drawRect:(CGrect)rect中,目标

Ios 阴影不显示在drawRect:(CGrect)rect中,目标,ios,objective-c,core-graphics,drawrect,Ios,Objective C,Core Graphics,Drawrect,我的目标是 1.为我的视图添加渐变(完成) 2.为我的视图的底部边缘添加阴影(此处有问题) 我正在做的是: - (void)drawRect:(CGRect)rect { CGContextRef context = UIGraphicsGetCurrentContext(); UIColor *whiteColor = [UIColor colorWithRed:1.0 green:1.0 blue:1.0 alpha:1.0]; UIColor

我的目标是 1.为我的视图添加渐变(完成) 2.为我的视图的底部边缘添加阴影(此处有问题) 我正在做的是:

- (void)drawRect:(CGRect)rect {
    CGContextRef context = UIGraphicsGetCurrentContext();

    UIColor *whiteColor         =   [UIColor colorWithRed:1.0 green:1.0 blue:1.0 alpha:1.0];
    UIColor *lightGrayColor     =   [UIColor colorWithRed:230.0/255.0 green:230.0/255.0 blue:230.0/255.0 alpha:1.0];

    CGRect paperRect            =   self.bounds;

    // Fill with gradient
    [self drawLinearGradient:context for:paperRect start:whiteColor.CGColor end:lightGrayColor.CGColor];

    CGContextSetStrokeColorWithColor(context, [UIColor lightGrayColor].CGColor);
    CGContextSetLineWidth(context, .9);
    CGContextStrokeRect(context, paperRect);

    // Add shadow
    CGContextSetShadowWithColor(context, CGSizeMake(0, self.frame.size.height), 9.0, [UIColor blueColor].CGColor);

}
-(void)drawLinearGradient:(CGContextRef)context for:(CGRect)rect start:(CGColorRef)startColor end:(CGColorRef)endColor {
    CGColorSpaceRef colorSpace  =   CGColorSpaceCreateDeviceRGB();
    CGFloat locations[]         =   { 0.0, 1.0 };

    NSArray *colors             =   [NSArray arrayWithObjects:(__bridge id)startColor, (__bridge id)endColor, nil];

    CGGradientRef gradient      =   CGGradientCreateWithColors(colorSpace, (__bridge CFArrayRef) colors, locations);

    CGPoint startPoint          =   CGPointMake(CGRectGetMidX(rect), CGRectGetMinY(rect));
    CGPoint endPoint            =   CGPointMake(CGRectGetMidX(rect), CGRectGetMaxY(rect));

    CGContextSaveGState(context);
    CGContextAddRect(context, rect);
    CGContextClip(context);
    CGContextDrawLinearGradient(context, gradient, startPoint, endPoint, 0);
    CGContextRestoreGState(context);

    CGGradientRelease(gradient);
    CGColorSpaceRelease(colorSpace);

}
然而,我得到的是下面没有阴影的图片

我在正确的轨道上,但中间没有什么东西吗?如果你有什么想法,请帮忙。。

在绘制任何应该有阴影的物体之前,需要设置阴影属性。在调用
CGContextStrokeRect
之前,先调用
CGContextSetShadowWithColor

此外,偏移量可能不应该像您所做的那样大。阴影偏移量控制阴影与使用该阴影绘制的像素的偏移量,因此,除非您希望阴影实际上从离矩形很远的地方开始,否则您可能只希望偏移一个像素左右,如
CGSizeMake(0.0,1.0)