web-dev-qa-db-ja.com

Apple Interface Builder:UIImageViewにサブビューを追加

Interface Bulderを使用してUIImageViewを作成しました。次に、そのサブビューとしてラベルをその中に配置します。コードでは次のように入力できます:[myUIImageView addSubview:myUILabel];しかし、私はIBの助けを借りてそれを行うことができますか? UIViewの解決策を見つけましたが、UIImageViewに似たものが見つかりません。

54
kpower

Appleのみが知っている理由により、インターフェイスビルダーでUIImageViewにサブビューを追加することはできません。 Subviewをプログラムで追加できると言ってもいいですが、自動サイズ変更マスクとサブビューの配置を設定するオーバーヘッドはすべてコードで処理する必要があり、面倒です。

そのため、簡単な回避策があります。ペン先でUIImageViewのインスタンスをドラッグする代わりに、UIViewをドラッグし、そのクラスをUIViewからUIImageViewに変更します(インスペクターのcmd + 4オプション)。デフォルトのimageViewインスタンスと新しいUIImageViewサブクラスインスタンスのnibにある唯一の違いは、nibから新しいimageViewに画像を設定できないことです(cmd + 1オプション)。そのため、-viewDidLoad適切なviewControllerのメソッド、画像をUIImageViewのこのアウトレットに設定します。

そうすることで、インターフェイスビルダーの「現在のUIImageView」インスタンスにサブビューを自由に追加できます。これは非常に簡単です。

お役に立てれば 。 。 。

112

答えを追加したいと思います。

UIImageViewにサブビューを追加することはできませんが、UIViewを透明(クリアカラー)背景に組み込むことで同じ効果を得ることができます。

次に、UIImageviewを前に配置します。

したがって、UIViewにはサブビューがあり、UIImageviewUIViewの背景です。

それがアップルの意図だと思います。

これがスクリーンショットです:

enter image description here

結果は次のとおりです。

enter image description here

背景をクリアカラーとして設定することを忘れないでください

enter image description here

誰かが実際にこれを行う方法をチュートリアルに教えてくれれば、それは素晴らしいことです。私は何時間もそれをチェックされた答えられた方法でしました。チェックされた答えは良い答えですが、作業中に背景画像がはっきりと見えないため、非常に直感的ではありません。私はこれを行う適切な方法だと思います。

13
user4951