如何获得CALayer的上下文加上几个像素?

run*_*mad 1 iphone calayer uiview drawrect ios

我正在创建一个带阴影效果的图层.我想绘制它,而不是将它作为子图层添加到我的视图层.但我有能够用阴影效果绘制它的问题.问题是它的上下文大小基于图层大小.但是如何为上下文设置rect?

CALayer *layer = [CALayer layer];
layer.frame = ...;
layer.backgroundColor = [UIColor redColor].CGColor;
layer.cornerRadius = 2.0;
layer.masksToBounds = NO;
layer.shadowColor = [[UIColor whiteColor] CGColor];
layer.shadowOffset = CGSizeMake(0, 1);
layer.shadowRadius = 0.5;
layer.shadowOpacity = 0.2;
[self.layer addSublayer:layer];
UIGraphicsBeginImageContext(layer.bounds.size);
[layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
[viewImage drawAtPoint:CGPointMake(0, 0)];
[layer removeFromSuperlayer];
Run Code Online (Sandbox Code Playgroud)

使用上面的代码,我得到的是盒子,但没有几个额外的像素填充与阴影(在所有四个方面).如果我增加ImageContext的大小,我得到的更多是高度和宽度,但仍然从x = 0和y = 0开始,我希望它从x = -5,y = -5或类似的东西开始那.

在此输入图像描述

谢谢你!

Nic*_*ico 5

使您的上下文在x和y中都大10个像素.

然后在绘制图层之前,执行CGContextTranslateCTM(context,5,5);

希望这可以帮助!