UIEdgeInsetsMakeforを使用するアプリを作成していますresizableImageWithCapInsetsが、それがどのように機能するのか正確にはわかりませんUIEdgeInsetsMake.4つの引数があります:
- 上
- 左
- 下
- 右
しかし、それらはフロートなので、それを画像に設定する方法がわかりません、ありがとう! :D
UIEdgeInsetsMakeforを使用するアプリを作成していますresizableImageWithCapInsetsが、それがどのように機能するのか正確にはわかりませんUIEdgeInsetsMake.4つの引数があります:
しかし、それらはフロートなので、それを画像に設定する方法がわかりません、ありがとう! :D
ドキュメントによると:
このメソッドを使用して、キャップ インセットを画像に追加したり、画像の既存のキャップ インセットを変更したりします。どちらの場合も、新しいイメージが返され、元のイメージは変更されません。
画像のスケーリングまたはサイズ変更中、キャップで覆われた領域はスケーリングまたはサイズ変更されません。代わりに、各方向のキャップで覆われていないピクセル領域が、左から右、上から下にタイル化され、画像のサイズが変更されます。この手法は、可変幅のボタンを作成するためによく使用されます。ボタンの角は同じ丸みを保ちますが、必要に応じて中央領域が拡大または縮小します。最高のパフォーマンスを得るには、サイズが 1x1 ピクセル領域のタイル領域を使用してください。
したがって、関数の値で非伸縮にしたいピクセルの量を使用するだけで済みUIEdgeInsetsMakeます。
21x50 ポイント (標準解像度では 21x50 ピクセル、Retina "@2x" 定義では 42x100 ピクセル) の画像があり、この画像を水平方向に伸縮可能にして、画像を引き伸ばすときに左右の 10 ポイントをそのままにしておくとします。 、ただし、中央の 1 ポイント幅のバンドのみを伸ばします。次に、 を使用しますUIEdgeInsetsMake(0,10,0,10)。
それらが浮動小数点数であることを気にしないでください (これは、たとえば、サブピクセル化のサイズ変更に役立ちますが、実際には、おそらく整数 (または小数部分のない浮動小数点数) のみを使用します。
これは iOS5+ のみの方法であり、iOS5 以前では利用できないことに注意してください。iOS5 より前の SDK を使用している場合は、stretchableImageWithLeftCapWidth:topCapHeight:代わりに使用してください。
[編集]構造体のフィールドの順序、および関数UIEdgeInsetsに引数を渡す順序を覚えていないので、以前から使用しているヒント: :UIEdgeInsetsMake
UIEdgeInsets insets = { .left = 50, .right = 50, .top = 10, .bottom = 10 };
または、明示的なキャストが必要な場合:
UIImage* rzImg = [image resizableImageWithCapInsets:(UIEdgeInsets){
.left = 50, .right = 50,
.top = 10, .bottom = 10
}];
特に、異なる境界線/方向が混在していないことを確認するために、より読みやすいと思います!
でもフロートなので画像に設定する方法がわかりません
これはUIImageインスタンスメソッドです。したがって、resizableImageWithCapInsets画像を作成するために使用する方法は、そのメッセージを画像(UIImage)に送信することから始めることです。
クールな新機能:エッジインセットがすべてゼロの場合、画像は並べて表示されることに注意してください。これは、背景画像を受け入れるものすべての背景として機能します。UIImageViewでも機能します。