11

カスタム UIView を構築し、それをインターフェイス ビルダーの親ビュー/ビュー コントローラー内に統合する場合、背景色を指定しないと (私は指定しません)、カスタム ビューを表すグラフィカル要素は非表示になります。

開発中にのみ、さまざまなカスタム ビューを識別する方法はありますか? それらを区別するためのハック/トリックはありますか?

私が思いついた最も近い方法は、IB で背景色を設定してから、カスタム ビューの実装で背景を削除することです。

4

2 に答える 2

15

四角形の境界

境界矩形が役立つ場合があります。メニュー バーに移動し、[エディタ] > [キャンバス] > [境界四角形を表示] を選択して、それらをオンにすることができます。

これが例です。UICollectionViewCellnib にレイアウトされたビュー (サブクラス) があります。1 行のラベル、2 行のラベル、およびカスタム サブビューがあります。カスタム サブビュー自体には、より小さなカスタム サブビューが含まれています。境界の長方形がオフになっているペン先は次のとおりです。

境界のない長方形

これは、境界の長方形がオンになっている同じペン先です。

境界のある長方形

背景色のオーバーライド

背景色を設定するというアイデアに基づいた別のテクニックを次に示します。この手法では、展開ターゲットが iOS 5.0 以降である必要があります。

説明したように、背景色を設定して、ペン先でビューが見えるようにします。

背景色

次に、Identity Inspector に切り替えてbackgroundColor、User Defined Runtime Attributes セクションに追加します。実行時にビューに表示する背景色に設定します。たとえば、実行時に白にしたい場合:

ユーザー定義のランタイム属性の backgroundColor

背景色をクリアにしたい場合はbackgroundColor、不透明度 0 の色に設定するか、任意の色ではなく「Nil」に設定できます。

backgroundColor を Nil に設定

于 2013-07-02T05:31:17.360 に答える
2

Interface Builder で背景色を設定し、コードでリセットする方法は、単純ですが効果的な手法です。2 つの改良点:

  1. 1 つの絵コンテ シーンに複数のカスタム ビューがある場合は、IBOutletCollection. したがって、Interface Builder ですべての背景色を指定してから、特定のシーンのすべてのカスタム ビューをコレクションに追加します。次に、単一のステートメントでそれらすべての背景色を設定できます。たとえば、1 つのシーンに多数のコントロールがある場合、すべて 1 つのIBOutletCollection名前が付けられviewsCollectionます。

    @property (strong, nonatomic) IBOutletCollection(UIView) NSArray *viewsCollection;
    

    単一のステートメントでそれらすべての背景色をクリアできます。

    [self.viewsCollection setValue:[UIColor clearColor] forKey:@"backgroundColor"];
    
  2. 「Identity inspector」の「Document」プロパティで「Label」を設定することにより、Interface Builder でのカスタム ビューの識別を少し簡単にすることもできます。

    ラベル

    これが完了したら、メイン パネルの左側にあるドキュメント アウトラインを見ると、ラベルが表示されていることがわかります。

    資料概要

    次に、ドキュメント アウトラインを使用すると、シーン内の個々のビューを簡単に識別できます。ここで行ったようにランダムなラベルを使用することも、カスタム ビュー クラスの名前などを使用することもできます。

于 2013-07-02T04:41:18.593 に答える