[swift]複数の部品を配列でまとめて設定して楽をする。

広告

画面の設計上、同じようなラベル(UILabel)をまとめて設定する場面に出くわすことがよくあります。

storyboardを利用した場合、各々一つ一つ画面に配置して、名前をつけてという感じになってしまいますが、コードで実現するならば、配列を利用することができそうです。

今回は、UILabelを配列化して、まとめて属性の設定を行い画面に配置します。

■完成イメージ

今回は、演劇感想文リンクのアプリの中で、公演情報を参照する画面の設計を行いました。

完成形は、こんな感じです。(色使いとかものすごく適当ですが)

公演画面イメージ

 

公演情報(題名、劇団、劇場、公演期間、作、演出、出演者)の情報を表示します。(画面例の公演情報は、架空です。ちょっと長めなものを題名/劇団名でランダムに選択しました。)

ポイントは、

  • ラベル(UILabel)の配列化によって同様の処理をまとめて行う。
  • 値(公演情報の中身)の長さが可変となるため、ラベルの幅、高さを値によって変わるようにする。
  • その上で、ラベルのお互いの配置を制御する

の3点です。

■ラベルの配列化

公演情報を表示する場合は、演劇感想文リンクでは、基本的に以下の項目を公演情報として表示しています。そのため、それをそのまま列挙型として定義します。各要素の名前(項目名として使用する)は、関数(項目名)を定義して、返すことにしました。配列化しておかないと、後のFor文で利用できないため、ラベル集という配列に変換までしておきます。


 

 

これを利用して列挙型で一気に項目名ラベルと値ラベルを生成します。

 

設定が終了したラベルは、上位のViewにaddSubviewします。これも、配列化していれば一発です。

以下の2行を、初期化処理の最後に記載します。


以上で、とりあえず配列化したラベルを作成することができました。

続きの「ラベルの幅、高さを値によって変わるようにする。」と「お互いの位置関係を元に配置する」はまた、別の記事にします。

広告

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です