在绘制到屏幕外缓冲区时,我正在努力让 Image Insets 工作。
使用 resizableImageWithCapInsets: 在 UIImage 上直接 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上的关键代码。
任何和所有建议表示赞赏。
矮