まゆたまガジェット開発逆引き辞典

電子工作やプログラミングのHowtoを逆引き形式で掲載しています。作りたいモノを決めて学んでいくスタイル。プログラマではないので、コードの汚さはお許しを。参照していないものに関しては、コピペ改変まったく問いません

UILabelを大量に作る

UIImageを大量に作るにはここを改良してファイル名生成のところをfor文で回してあげれば良いのですが、UILabelはちょっとめんどうです。
UILabelを配列の数だけ生成し、位置と角度をランダムにしてみました。

※Labelを破棄する場合の処理を追加しました。
以下の場合、通常だと[_label removeFromSuperview]; で破棄(消す)ことができますが、生成した直後のものしか消してくれません(以下だと2つ残ってしまう)。
すべて消す場合は、背景が透明のViewを新たに作ってひも付けし、LabelのみそのViewの上にaddSubviewして、そのViewごと破棄すればOKです。

コードは以下。IBやStoryboardを使わずコードのみで生成するという点に注意です。

・ViewController.h Labelをまるごと破棄(消す)場合はこの処理が必要

@property (weak, nonatomic) IBOutlet UIView *labelview;

- (IBAction)clearText:(id)sender;

・ViewController.m

- (void)viewDidLoad
{
    [super viewDidLoad];
//表示する文字を配列にまとめる
NSArray *myArray = [NSArray arrayWithObjects:@"まどか", @"ほむら", @"さやか", nil];

    for(NSString *text in myArray){
        //10-170までランダムの数値を出す
      int labelx = 10 + arc4random() % 160;
        //50-250までランダムの数値を出す
        int labely = 50 + arc4random() % 200;
 //回転角、0-360までランダムの数値を出す
        int labeltrans = 0 + arc4random() % 360;

//ラベル生成
     UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(labelx, labely, 100,20)];
//背景色設定
        label.backgroundColor = [UIColor yellowColor];
        //回転角設定
        label.transform = CGAffineTransformMakeRotation(labeltrans);

        [label setText:text];
        [self.view addSubview:label];
//ラベルを消す必要がある場合は、上を以下のように書き換える
[_labelview addSubview:label];
      
    }

}

//ラベルを消す処理
- (IBAction)clearText:(id)sender {
       [_labelview removeFromSuperview];
  
}