2009-12-21 50 views
3

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

-(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; 
} 

回答

2

我相信你传递的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]; 
+0

我试着添加这段代码,但我仍然以修剪过的阴影结束。 – April 2009-12-21 23:40:29

+0

我是否在添加上面的代码时做了其他错误?或者该图层是否是影子? – April 2009-12-22 01:14:43

+0

该图层应该是阴影。你确实将clipsToBounds设置为NO? – 2009-12-22 01:26:23