2017-05-31 6 views
2

配列から複数のラベルを作成しました。特定のステップでは、私は、xを変更する必要があり、yは、ラベルの座標が、ラベルに対処する方法がわからない:誰かが私を助けることができれば動的に作成されたラベルのプロパティを変更する方法

for zone in zoneArray { 

     let zoneLabel = UILabel(frame: CGRect(x: locationX, y: locationY, width: 150, height: 75)) 

     zoneLabel.backgroundColor = UIColor.lightGray 
     zoneLabel.layer.masksToBounds = true 
     zoneLabel.layer.cornerRadius = 10 
     zoneLabel.text = zone} 

は非常に幸せになります。

答えて

1

たぶん、あなたはすべてのラベルにタグを追加し、タグ自体を用いて所望のものを見つけることができる...

var i = 1 
for zone in zoneArray { 
    let zoneLabel = UILabel(frame: CGRect(x: locationX, y: locationY, width: 150, height: 75)) 
    let zoneLabel = UILabel(frame: CGRect(x: 0, y: 0, width: 150, height: 75)) 
    zoneLabel.backgroundColor = UIColor.lightGray 
    zoneLabel.layer.masksToBounds = true 
    zoneLabel.layer.cornerRadius = 10 
    zoneLabel.text = zone 
    zoneLabel.tag = i 
    i += 1 
} 
+0

ビューのタグを「0」に設定しないでください。これはすべてのビューのデフォルトタグであり、明示的に使用してもそのビューを見つけることはできません。 – rmaddy

+0

@rmaddy:あなたは絶対に正しいです!ありがとうございました。 – DungeonDev

+0

あなたの素早く便利な答えに感謝します。 @DungeonDevへのちょうど1つの質問:タグを文字列として持つことも可能ですか?だから私は 'ゾーン'変数を使用することができますか?これは参照する方が便利です。 – Heki

1

最も簡単な方法は、あなたのVC

var labels = [UILabel]() 
にUILabelの配列を宣言することです

そしてあなたのforループの内側にそれを追加します。

0

このタイプのラベルをプログラムで作成する際は、2つのステップを考慮する必要があります。

ステップ1:

ちょうど氏ルー・フランコが言ったようにラベルを作成します。

var labels = [UILabel]() 

ステップ2:

必要な着色やテキストメッセージを実行してください。

重要事項:フレームをフレームのように設定しないでください。すべてのデバイス用に設計する場合はプログラムで制約を追加します。つまり、プログラムによって自動レイアウトを使用します。

自動レイアウトをプログラムで実行する方法は3つあります。しかし、私はレイアウトアンカーが大好きです。それは簡単だからちょうどそれにジャンプし、あなたはそれを愛するでしょう。

関連する問題