ダイアログバブルに似たストレッチ可能な画像を実装しようとしていますが、正しく理解できていません。
次のコードで:
UIImage * ballon = [[UIImage imageNamed:@ "strech.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(12、11、12、9)];
次の結果が得られます。
これは私のオリジナルのleftBubble.pngです
何が間違っている可能性がありますか?
画像全体にグラデーションを付けないでください。そこから線が来ています。画像の中心(引き伸ばされる部分は、水平方向だけでなく垂直方向にも繰り返されるため、単色である必要があります)。
画像を水平方向に引き伸ばすだけの場合、画像は問題なく機能します。
私があなたのために作ったこの画像を試してみて、いくつかの異なるcapInsetsを使用してください:
UIImage *ballon = [[UIImage imageNamed:@"strech.png"]resizableImageWithCapInsets:UIEdgeInsetsMake(12, 20, 22, 12)];
すべてのスタイリングがバブルの端で行われ、中央がしっかりしていることに注意してください。
編集:
これが画像の小さいバージョンです。私が何をしているかがわかるように、大きなものを作りました。
jhilgert00の答えについてコメントすることはできませんが、何かを追加したいと思います。ストレッチではなく、内側のピクセルを並べて表示します。これが、 -[UIImage resizableImageWithCapInsets:]
jhilgert00が言ったようにグラデーションが機能しない理由です。
iOS 6.0以降を使用している場合は、次を使用できます。-[UIImage resizableImageWithCapInsets:capInsets resizingMode:UIImageResizingModeStretch]
http://developer.apple.com/library/ios/#documentation/uikit/reference/UIImage_Class/Reference/Reference.htmlから
-(UIImage *)resizableImageWithCapInsets:(UIEdgeInsets)capInsets
[]各方向のキャップで覆われていないピクセル領域は、画像のサイズを変更するために、左から右、上から下に並べて表示されます。
と
-(UIImage *)resizableImageWithCapInsets:(UIEdgeInsets)capInsets resizingMode:(UIImageResizingMode)resizingMode
UIImageResizingModeStretchサイズ変更モードで画像のサイズを特に変更する場合にのみ、対応するメソッドの代わりにこのメソッドを呼び出す必要があります。