2009-12-21 5 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       *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

+0

위와 같이 코드를 추가 할 때 다른 오류가 있습니까? 아니면 그 레이어가 그림자라고 생각합니까? – April

+0

레이어가 그림자라고 가정합니다. clipsToBounds를 NO로 설정 했습니까? –

관련 문제