LoginSignup
58
59

More than 5 years have passed since last update.

UIImage で Resizable Image

Last updated at Posted at 2013-03-31

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 等ではそもそもうまく描画されないような気がする。

58
59
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
58
59