[iOS 8] storyboard, xib で UIImageView に addSubview する

2014.10.03

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

なぜかできない

storyboard や xib では UIImageView に UIView を継承するオブジェクトを addSubview することができません。
ですが、私はよく「枠のような画像の UIImageView の中に UILabel をaddSubview する」ということがしたくなります。
今回はこれを storyboard で実現する方法をお伝えします。

やりたいこと

storyimage1


storyimage2

やりかた

1. storyboard 上で、UIView を UIImageView に変更する

storyimage3

 


 

storyimage4


storyimage5


2. コードで UIImageView の image を設定する

storyboard 上でクラスを変更しても、表示される項目は UIView のものなので、storyboard から image を設定することはできません。できまーす! 下記参照。
よって、以下のように画像の指定はコードで行う必要があります。

imageView.image = UIImage(named: "frameImage")

追記:User Defined Runtime Attributes を利用することによって、storyboard から image を設定することが可能です。(コメントありがとうございます)

2'. storyboard 上で UIImageView の image を設定する

storyimage7

実行画面

storyimage6

まとめ

以上のように storyboard の設定を行うことで、UIImageView に UIView を継承するオブジェクトを addSubview することができるようになります。
これによって addSubview したオブジェクトに対して Autolayout の設定がとても簡単に行えるようになります。
ただし、理由はわかりませんが Apple の推奨しているやり方ではないので、使用するときは自己責任でお願いします。