画面外のバッファに描画するときに、イメージインセットを機能させるのに苦労しています。
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