【发布时间】:2012-09-15 18:39:52
【问题描述】:
当绘制到屏幕外缓冲区时,我正在努力让 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 上的关键代码。
任何和所有建议都表示赞赏。
Dw
【问题讨论】:
标签: iphone ios ios5 core-graphics