我想爲具有圖像圖層的UIImageView添加陰影。(iphone)爲圖層添加陰影
我試過self.layer.shadowOffset/shadowOpacity路線,但它太慢了..
當我想要添加陰影,我稱之爲addShadowLayerWithOffset方法低於我的預期調用的drawRect,並添加陰影..
但是drawRect沒有被調用。
缺少什麼我在這裏?
- (void)drawRect:(CGRect)rect
{
SYSLOG(LOG_DEBUG, "in drawRect, isShadowed: %d", isShadowed);
if (isShadowed == true)
{
CGContextRef currentContext = UIGraphicsGetCurrentContext();
CGContextSaveGState(currentContext);
CGContextSetShadow(currentContext, CGSizeMake(100, 100), 3);
[super drawRect: rect];
CGContextRestoreGState(currentContext);
}
else
[super drawRect: rect];
}
- (void) addShadowLayerWithOffset: (int)offset
{
// self.layer.shadowOffset = CGSizeMake(offset,offset);
// self.layer.shadowOpacity = 0.7f;
// self.layer.shadowRadius = 5.0;
isShadowed = true;
[self setNeedsDisplay];
}
- 編輯
好吧,我得到了drawLayer被調用。 我需要[self.layer setNeedsDisplay]不[self.layer setNeedsPlay]其中self是UIImageView的子類。
但是陰影沒有被繪製,實際上圖像(原始圖層)本身也沒有被顯示。
我應該改變什麼?
- (void) drawLayer: (CALayer*) layer inContext: (CGContextRef)context
{
SYSLOG(LOG_DEBUG, "in drawLayer, isShadowed: %d", isShadowed);
if(isShadowed == true)
{
CGContextSaveGState(context);
CGContextSetShadow(context, CGSizeMake(10, 10), 3);
[super drawLayer: layer inContext: context];
CGContextRestoreGState(context);
}
else
[super drawLayer: layer inContext: context];
}
我想[super drawRect:rect]很好,因爲[super dealloc]很好。無論如何,drawLayer也不會被調用。我已經設置了我添加到視圖中的圖層的委託。 – eugene 2011-02-18 07:59:08