UIImage#stretchableImage(withLeftCapWidth:topCapHeight:) について

UIImageには、画像の端部分以外を延ばしてリサイズする描画方法がある。ボタン画像などで多用するもので、これはUIImage#stretchableImage(withLeftCapWidth:topCapHeight:)を用いることで実現できる。もちろん、Asset CatalogにもSlicingという機能があるのでこれを用いればGUI上で直感的に数値指定ができるので便利なのだが、たとえばプログラムで生成した画像などにおいては、依然としてUIImageのAPIに頼る場面はある。

上記に示したAPI、実はiOS 4ごろくらいから使っており、今でも stretch… と入力補完するクセがあったのだが、先日ふとWeb上でAPIリファレンスを確認したところ、なんとdeprecated APIだったのだ。それも、iOS 6以降と、はるか昔から。

deprecated.png

stretchableImage(withLeftCapWidth:topCapHeight:) – UIImage | Apple Developer Documentation

なぜ気がつかなかったかと言うと、Xcode上に表示するQuick Helpではこうした記述がなく、Interfaceにも@available指定がないため、警告すらされないのだ。というわけで何の疑いもなく使い続けていた。APIリファレンス上ではdeprecatedだが、実質はそのような扱いになっていないのだろうか。

ちなみに、このAPIの代わりとなるのは、resizableImage(withCapInsets:)だ。パラメタがUIEdgeInsetsとなったことで、より直感的に記述できるようになった。

resizableImage(withCapInsets:) – UIImage | Apple Developer Documentation

コメントを残す