iPhone用の9パッチローダーはありますか?
-
16-09-2019 - |
質問
Android には、9 パッチと呼ばれる伸縮可能な画像を定義する優れた方法があります。見る これらのドキュメント コンセプトの説明のために。アイデアは、png 画像を 1 ピクセルの境界線で囲み、そこで伸縮可能な領域と画像のパディング寸法を定義できるようにすることです。これは本当に素晴らしいので、このアイデアを iPhone アプリで使用したいと思います。独自の 9 パッチを UIImage ローダーに書き込む前に、それがすでに存在するかどうか確認してみようと思いました。Googleは何も結果を返してくれないのであまり期待はできませんが、聞いてみるのも悪くないですよね?:-)
編集: 皆さん、回答には感謝していますが、私が知っているのは stretchableImageWithLeftCapWidth...
. 。パスを取るコードを探しています @"foo.9.png"
そして伸縮性のあるものを返します UIImage
. 。このコードは間違いなく使用します stretchableImageWithLeftCapWidth...
内部的に。その方法を使用すれば、自分でコードを書くことができると確信しています。しかし、私は誰かがすでにそれをやったかどうかを尋ねています。
解決
Tortuga22 ソフトウェアから電子メールを受け取り、そのようなライブラリを作成し、Apache ライセンスに基づいてリリースしたことを知らせました。
発表: http://blog.tortuga22.com/2010/05/31/payment-tortuga-22-ninepatch/
ソースコード: http://github.com/tortuga22/Tortuga22-NinePatch
使用例:
// loads-and-caches ninepatch and rendered image of requested size
UIImage buttonImg = [TUNinePatchCache imageOfSize:buttonSize
forNinePatchNamed:@"buttonNormalBackground"];
[self.buttonNeedingBackground setImage:buttonImg
forControlState:UIControlStateNormal];
他のヒント
UIView の contentStretch プロパティも見てください。これは、stretchableImageWithLeftCapWidth よりも堅牢で適切に動作します。基本的に、画像内で伸縮可能な長方形を定義し、スケールされた 9 パッチを自動的に作成するだけで機能します。この内部長方形は何でも構いません。画像の中心にある必要さえありません。さらに、stretchableImage とは異なり、このメソッドはグラフィックスを適切に縮小し、照明や光沢のあるグラフィックスに対して期待どおりに動作します。現実世界のアプリケーションでこれ以上のものは思いつきません。
はい UIImage
それのようなものをサポートします。見る
- (UIImage *)stretchableImageWithLeftCapWidth:(NSInteger)leftCapWidth topCapHeight:(NSInteger)topCapHeight
leftCapWidth と topCapHeight のドキュメント
基本的に、画像は左端と右端から leftCapWidth ピクセル、および上端と下端から topCapHeight ピクセルの領域には引き伸ばされません。画像を拡大縮小すると、これらの制限内の領域が引き伸ばされます。
全て UIImage
画像はこれをネイティブにサポートしています。デフォルトでは画像全体が伸縮可能ですが、 leftCapWidth
そして topCapHeight
プロパティを作成することも、既存のプロパティからプロパティを生成することもできます UIImage
とともに - (UIImage *)stretchableImageWithLeftCapWidth:(NSInteger)leftCapWidth topCapHeight:(NSInteger)topCapHeight
方法。
Apple の実装では、これらの値の一方または両方を設定すると、伸縮可能な領域の高さ/幅が強制的に 1 ピクセルになることに注意してください。