2013-07-09 17 views
0

我想添加可变大小的UILabels。多动态大小的UILabels不显示

标签包含来自用户的评论。我在这里尝试实现我的标签的动态大小,然后将它们添加到我的视图(稍后我将其添加到主视图)

我知道这会使标签出现ontop eachother,但不是问题。标签根本没有显示。

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 
+0

这是什么的NSLog(@ “expectedlabelsizeheight%F”,newFrame.size.height);正在打印? – Rushi

+0

用控制台输出编辑 – Eyeball

+0

您可以尝试在label.frame = newFrame之前打印newFrame;并粘贴输出。 – Rushi

回答

1

动态调整大小不工作,因为你必须调用方法setNeedsDisplay设置帧之后。

label.frame = newFrame; 

[label setNeedsDisplay]; 

编辑

NSString *text1 = @"This is my text This is my text This is my text This is my text This is my text This is my text This is my text This is my text"; 
    CGSize constraint1 = CGSizeMake(280, 2000); 



CGSize size1 = [text1 sizeWithFont:[UIFont systemFontOfSize:12] constrainedToSize:constraint1 lineBreakMode:UILineBreakModeWordWrap]; 


    label.frame=CGRectMake(posx,posy,size1.width,size1.height); 
    label.lineBreakMode = UILineBreakModeWordWrap; 
    label.numberOfLines = size1.height/15; 
    [label setFont:[UIFont systemFontOfSize:12]]; 
    label.text = text1; 
    [label setNeedsDisplay]; 
+0

编辑制作,没有运气 – Eyeball

+0

@Eyeball尝试编辑代码 –

+0

不工作:/。 – Eyeball