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

なぜかできない

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 の推奨しているやり方ではないので、使用するときは自己責任でお願いします。

“[iOS 8] storyboard, xib で UIImageView に addSubview する” への2件のフィードバック

  1. Masayuki Yamaya より:

    IBの”User Defined Runtime Attributes”を使えば「2. コードで UIImageView の image を設定する」の部分もIBで可能ではないでしょうか?

  2. Tanaka Keisuke より:

    失礼しました。可能です。
    追記させていただきました。
    ありがとうございます。

コメントを残す