菜鸟教程小白 发表于 2022-12-12 10:03:30

ios - drawRect :(CGrect)rect, 目标中未显示阴影


                                            <p><p>我的目标是
1.为我的 View 添加渐变(完成)
2.为我的 View 的底部边缘添加阴影(问题在这里)
我正在做的是:</p>

<pre><code>- (void)drawRect:(CGRect)rect {
    CGContextRef context = UIGraphicsGetCurrentContext();

    UIColor *whiteColor         =   ;
    UIColor *lightGrayColor   =   ;

    CGRect paperRect            =   self.bounds;

    // Fill with gradient
    ;

    CGContextSetStrokeColorWithColor(context, .CGColor);
    CGContextSetLineWidth(context, .9);
    CGContextStrokeRect(context, paperRect);

    // Add shadow
    CGContextSetShadowWithColor(context, CGSizeMake(0, self.frame.size.height), 9.0, .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             =   ;

    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);

}
</code></pre>

<p>但是,我得到的是下面没有阴影的图片</p>

<p>我是否在正确的轨道上,但在中间错过了什么?如果您有任何想法,请帮助..
<img src="/image/5idu6.png" alt="enter image description here"/> </p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>您需要设置阴影属性<em>之前</em>绘制任何应该有阴影的东西。在调用 <code>CGContextStrokeRect</code> 之前先调用 <code>CGContextSetShadowWithColor</code>。</p>

<p>此外,偏移量可能不应该像您所做的那样大。阴影偏移量控制阴影与使用该阴影绘制的像素的偏移量,因此除非您希望阴影实际开始时离您的矩形很远,否则您可能只需要一个像素左右的偏移量,例如 <code>CGSizeMake(0.0, 1.0)</code>.</p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - drawRect :(CGrect)rect, 目标中未显示阴影,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/15820205/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/15820205/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - drawRect :(CGrect)rect, 目标中未显示阴影