0

可変サイズの UILabels を追加しようとしています。

ラベルには、ユーザーからのコメントが含まれています。ここで、ラベルの動的サイズ変更を実装しようとしましたが、それらをビューに追加しました (後でメイン ビューに追加します)。

これにより、ラベルが重なり合って表示されることはわかっていますが、それは問題ではありません。ラベルはまったく表示されません。

NSMutableDictionary *comments = [[NSMutableDictionary alloc] init];
[comments setObject:@"xxxxxxxxx" forKey:@"simon"];
[comments setObject:@"xxxxxxxxxxxxxxxx" forKey:@"pontus"];
[comments setObject:@"xxxxx" forKey:@"sudden"];
[comments setObject:@"xxxx" forKey:@"juan"];
[comments setObject:@"xxxxxxxxxxx" forKey:@"eric"];

DetailedViewController *detailedBurger= [[DetailedViewController alloc] initWithNibName:nil bundle:nil];

for(NSString *key in comments){
    UILabel *label =  [[UILabel alloc] init];
    label.backgroundColor = [UIColor clearColor];
    label.text = [comments objectForKey:key]; //etc...
    [label setFont:[UIFont fontWithName:@"PatuaOne-Regular" size:12.0]];

    CGSize maximumLabelSize = CGSizeMake(296,9999);

    CGSize expectedLabelSize = [label.text sizeWithFont:label.font
                                      constrainedToSize:maximumLabelSize
                                          lineBreakMode:label.lineBreakMode];

    //adjust the label the the new height.
    CGRect newFrame = label.frame;
    newFrame.size.height = expectedLabelSize.height;
    newFrame.size.width = expectedLabelSize.width;
    NSLog(@"expectedlabelsizeheight %f", newFrame.size.height);
    label.frame = newFrame;
    [label setNeedsDisplay];
    [detailedBurger.commentField addSubview:label];
    NSLog(@"%f, %f", label.center.x, label.center.y);

}

// Do any additional setup after loading the view from its nib.
self.backgroundView.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"background.png"]];

UIScrollView *scrollView = [[UIScrollView alloc] initWithFrame:self.backgroundView.frame];
scrollView.contentSize = CGSizeMake(320, 900);

[scrollView addSubview:detailedBurger.view];
detailedBurger.view.center = CGPointMake(160, detailedBurger.view.frame.size.height/2);
[self.backgroundView addSubview:scrollView];

このコードは、フレームにハード値 (例: label.frame = CGRectMake(0,0,10,10)) を明示的に設定すると機能しますが、動的なサイズ変更は機能しないようです。

コンソール出力:

2013-07-09 10:12:42.223 RateYourBurger[31439:c07] expectedlabelsizeheight 15.000000
2013-07-09 10:12:42.224 RateYourBurger[31439:c07] 10.000000, 20.000000
2013-07-09 10:12:42.224 RateYourBurger[31439:c07] expectedlabelsizeheight 15.000000
2013-07-09 10:12:42.224 RateYourBurger[31439:c07] 10.000000, 20.000000
2013-07-09 10:12:42.225 RateYourBurger[31439:c07] expectedlabelsizeheight 15.000000
2013-07-09 10:12:42.225 RateYourBurger[31439:c07] 10.000000, 20.000000
2013-07-09 10:12:42.226 RateYourBurger[31439:c07] expectedlabelsizeheight 15.000000
2013-07-09 10:12:42.226 RateYourBurger[31439:c07] 10.000000, 20.000000
2013-07-09 10:12:42.227 RateYourBurger[31439:c07] expectedlabelsizeheight 15.000000
2013-07-09 10:12:42.227 RateYourBurger[31439:c07] 10.000000, 20.000000
4

1 に答える 1