我正在尝试在离屏缓存上绘制图像时使用Image Insets,但遇到了困难。
对于UIImage,直接使用resizableImageWithCapInsets:方法并将其setImage:到按钮中,这种方法对我来说很有效:
如下所示(左边是原始缩放,右边是带插图的缩放):
对于UIImage,直接使用resizableImageWithCapInsets:方法并将其setImage:到按钮中,这种方法对我来说很有效:
UIImage * base = [UIImage imageNamed:@"button.png"];
UIImage * img = [base resizableImageWithCapInsets:UIEdgeInsetsMake(20,20,20,20)];
[self setImage:img forState:UIControlStateNormal];
如下所示(左边是原始缩放,右边是带插图的缩放):
所以正确的那个是好的 - 上/下/左/右的线条间距相等。目前为止还不错。
现在,如果我尝试使用一张绘制并捕获到离屏缓冲区的图片来做同样的事情:
UIImage * base = [UIImage imageNamed:@"button.png"];
base = [base resizableImageWithCapInsets:UIEdgeInsetsMake(20,20,20,20)];
UIGraphicsBeginImageContextWithOptions(self.bounds.size, NO, 0);
ctx = UIGraphicsGetCurrentContext();
CGContextDrawImage(ctx, CGRectMake(0,0,self.bounds.size.width,
self.bounds.size.height), [base CGImage]);
img = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
[self setImage:img forState:UIControlStateNormal];
我得到了以下结果(左边是原始缩放,右边是带有插图):
.
看起来这里忽略了插图。
有什么建议吗?完整的示例请参见http://people.apache.org/~dirkx/insetSample.zip,关键代码请参见http://pastebin.com/rm8h6YFV。
欢迎任何建议。
Dw