【问题标题】:I am trying to add a drop shadow to a UImageView我正在尝试向 UImageView 添加阴影
【发布时间】:2010-12-28 22:09:12
【问题描述】:

我正在尝试向 UIImage 视图添加投影。我得到一个阴影,但它被剪裁到图像视图的边缘,我不知道为什么,因为我正确地将 uiimageview.clipsToBounds 设置为 NO。下面是代码:

-(void)addShadow
{
   UIGraphicsBeginImageContext(self.frame.size);
   CGContextRef myContext =  UIGraphicsGetCurrentContext();
   float           myColorValues[] = {0, 0, 0, darkness};// 3
   CGColorRef      myColor;// 4
   CGColorSpaceRef myColorSpace;
   CGContextSaveGState(myContext);// 6

   myColorSpace = CGColorSpaceCreateDeviceRGB ();// 9
   myColor = CGColorCreate (myColorSpace, myColorValues);// 10
   CGContextSetShadowWithColor (myContext, myShadowOffset, spread, myColor);// 11
   // Your drawing code here// 12
   // CGContextDrawImage(myContext, rotatingView.frame,imgRef);

   rotatingView.clipsToBounds = NO;
   [rotatingView.image drawInRect:rotatingView.frame
                        blendMode:kCGBlendModeNormal alpha:.5];
   CGColorRelease (myColor);// 13
   CGColorSpaceRelease (myColorSpace); // 14

   UIImage *imageCopy = UIGraphicsGetImageFromCurrentImageContext();
   CGContextRestoreGState(myContext);
   UIGraphicsEndImageContext();
   rotatingView.image = imageCopy;
}

【问题讨论】:

    标签: iphone cocoa-touch uikit dropshadow


    【解决方案1】:

    我相信您传递的 CGContextRef 也设置了剪辑,以防止这种确切的行为。您可能想尝试只添加一个 CALayer:

    CALayer                         *layer = [CALayer layer];
    CGRect                          bounds = self.bounds;
    
    layer.bounds = bounds;
    layer.position = CGPointMake(bounds.size.width / 2 + 5, bounds.size.height / 2 + 5);
    layer.backgroundColor = [UIColor colorWithWhite: 0.10 alpha: 0.75].CGColor;
    layer.zPosition = -5;
    
    [self.layer addSublayer: layer];
    

    【讨论】:

    • 我尝试添加此代码,但最终还是得到了剪切阴影。
    • 我在添加上述代码时是否做错了什么?还是该图层应该是阴影?
    • 图层应该是阴影。您确实将 clipsToBounds 设置为 NO 吗?
    • 啊,没有简单的方法可以做到这一点。你基本上必须做一个自定义阴影,虽然有几种方法可以做到,但没有一个是微不足道的。
    • 确保你#import "QuartzCore/CALayer.h"
    猜你喜欢
    • 2012-02-19
    • 2015-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-03
    • 2013-02-09
    相关资源
    最近更新 更多