iphone - 不显示多个动态大小的标签

标签 iphone ios objective-c object

我正在尝试添加具有可变大小的 UILabels。

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

我知道这会使标签彼此叠置,但这不是问题所在。标签根本不显示。

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

最佳答案

动态调整大小不起作用,因为您必须在设置框架后调用方法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];

关于iphone - 不显示多个动态大小的标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17542784/

相关文章:

iphone - 如何就地交换 `NSMutableDictionary` 键和值?

iphone - AFNetworking setImageWithURL - 获取返回图像的高度?

iOS 从设置中获取登录 ID,而不是从应用程序登录中获取

ios - 您可以将 View 锚定到位吗? (或者是否有其他一些解决方法来防止 View 被 UI DateTimePicker 推送?)(iOS)

iphone - U_ILLEGAL_ARGUMENT_ERROR 导致我的应用程序崩溃

objective-c - @property 或 init 设置实例变量

Object Segue 上的 IOS 无法识别选择器

ios - 如何使用 WKWebview 检查 phonegap 应用程序

ios - 远程通知未按预期工作

objective-c - 如何在 Objective-C 中创建 Swift 对象?