Android でいう 9-Patch 的な画像引き延ばしができる。(9-Patch ほど小回りは効かない)
角丸ボタンなんかの素材は小さく作っておいて、実装側で引き延ばすやり方がエコかもしれない。
その場合、細かいノイズをかけたようなデザインは避け、平坦なグラデーションの方が都合が良い(ノイズ等だと残念な感じに引き延ばされ汚くなる)。
ノイズ系には後述の UIImageResizingModeTile
を使用すると良い。
UIImage *image = [UIImage imageNamed:@"ButtonNoGazou.png"];
// image の上0pt, 左4pt, 下2pt, 右8pt の padding を残して引き延ばす
UIImage *btnbg = [image resizableImageWithCapInsets:UIEdgeInsetsMake(0, 4, 2, 8)];
// UIButton の背景にあてれば、ボタンの大きさに合わせて画像が引き延ばされる。
[btn setBackgroundImage:btnbg forState:UIControlStateNormal];
UIImageResizingMode (iOS 6)
iOS 6以降からは UIImageResizingMode
で引き延ばし方を指定出来る。
標準は UIImageResizingModeTile
でタイル状に補完される。ノイズ系の画像に向いている。
もうひとつの UIImageResizingModeStretch
では引き伸ばして補完される。グラデーションやのっぺり系の画像に向いている。
UIViewContentMode
UIImageView の場合は ContentMode によって描画内容が変化する。
いちばんしっくりくるのが UIViewContentModeScaleToFill、
UIViewContentModeAspectFit, UIViewContentModeAspectFill では View の矩形に合わせて描画しようとする。
UIViewContentModeTop 等ではそもそもうまく描画されないような気がする。