0

配列内のオブジェクトと同じ数のラベルを追加したいと考えています。しかし、それらをどのように整列させるのですか??.私は1つを他の下に置き、ページが完了したら、次の列から開始する必要があります.しかし、コードを使用して、もう一方をオーバーライドしようとしました.

- (void)viewDidLoad
{
    [super viewDidLoad];
    array = [[ NSMutableArray alloc]initWithObjects:@"aaa",@"bbb",@"ccc",@"ddd",nil];
    for( int i=0;i<[array count];i++)
    {
        NSString *theText = [array lastObject];
        UILabel *label = [[UILabel alloc]init];
        label.text = theText;
        label.backgroundColor = [UIColor clearColor];
        label.lineBreakMode = UILineBreakModeWordWrap;
        label.frame = CGRectMake(0, label.frame.origin.y + label.frame.size.height, size.width + 20, size.height + 20);
        [self.view addSubview:label];
    }
}
4

5 に答える 5

5

このコードを試してください。

array = [[ NSMutableArray alloc]initWithObjects:@"aaa",@"bbb",@"ccc",@"ddd",nil];
UILabel *label;
int y =10;
for( int i=0;i<[array count];i++)
{
    NSString *theText = [array objectAtIndex:i];
    label = [[UILabel alloc]init];
    label.text = theText;
    label.backgroundColor = [UIColor clearColor];
   label.frame = CGRectMake(0, y + label.frame.size.height, size.width + 20,   size.height + 20);
[self.view addSubview:label];
    y = y +label.frame.size.height+5;
}
于 2012-06-26T11:25:20.103 に答える
0

これを行う:

- (void)viewDidLoad
{
  [super viewDidLoad];
  array = [[ NSMutableArray alloc]initWithObjects:@"aaa",@"bbb",@"ccc",@"ddd",nil];
  for( int i=0;i<[array count];i++)
  {
    UILabel *label = [[UILabel alloc]init];
    label.text = [array objectAtIndex:i];
    label.backgroundColor = [UIColor clearColor];

    label.frame = CGRectMake(10, (i*30)+10, 100, 30); // here height is 30 and width is 100;
    [self.view addSubview:label];
   }
  }
于 2012-06-26T11:28:00.570 に答える
0
- (void)viewDidLoad
{
    float originFromY = 0;

    [super viewDidLoad];
    array = [[ NSMutableArray alloc]initWithObjects:@"aaa",@"bbb",@"ccc",@"ddd",nil];
    for( int i=0;i<[array count];i++)
    {
         NSString *theText = [array lastObject];
         UILabel *label = [[UILabel alloc]init];
         label.text = theText;
          label.backgroundColor = [UIColor clearColor];
         lineBreakMode:UILineBreakModeWordWrap];
        label.frame = CGRectMake(0, originFromY, 50,40);
       [self.view addSubview:label];
       originFromY += 60;
    }
 }

これはあなたを助けるかもしれません

于 2012-06-26T11:26:18.790 に答える
0

変更されたコード

- (void)viewDidLoad
{
[super viewDidLoad];
array = [[ NSMutableArray alloc]initWithObjects:@"aaa",@"bbb",@"ccc",@"ddd",nil];
int y = 0;
for( int i=0;i<[array count];i++)
{
    NSString *theText = [array lastObject];
    UILabel *label = [[UILabel alloc]init];
    label.text = theText;
    label.backgroundColor = [UIColor clearColor];
    lineBreakMode:UILineBreakModeWordWrap];
    label.frame = CGRectMake(0, y, size.width + 20, size.height + 20);
    y += size.height + 20;
    [self.view addSubview:label];
}
}
于 2012-06-26T11:26:25.547 に答える
0

ループ内の最後のオブジェクトを常に取得しています。代わりに、適切なインデックスからオブジェクトを取得する必要があります。

int y = 10;
for( int i=0;i<[array count];i++)
{
    //NSString *theText = [array lastObject]; Wrong One
    NSString *theText = [array objectAtIndex:i]; //Correct One
    ...
    ...
    label.frame = CGRectMake(0, y, size.width + 20,   size.height);
    y += size.height + 5;

}

また、origin.y を適切に管理する必要があります。

于 2012-06-26T11:25:21.523 に答える