为啥 sizeToFit 会删除我的整个标签?

Posted

技术标签:

【中文标题】为啥 sizeToFit 会删除我的整个标签?【英文标题】:Why does sizeToFit remove my entire label?为什么 sizeToFit 会删除我的整个标签? 【发布时间】:2013-10-09 22:03:20 【问题描述】:

我正在尝试使用函数 sizeToFit。它在整个应用程序中完美运行,但在下面的代码中不起作用。此外,如果不能按照我的方式完成,请告知。

            self.label = [[UILabel alloc] initWithFrame:CGRectMake(10.0, 67.0, 290, 50)];
        self.label.font= [UIFont fontWithName:@"Helvetica-Bold" size:20];
        self.label.textColor = [UIColor colorWithRed:33.0f/255.0f green:74.0f/255.0f blue:146.0f/255.0f alpha:1.0f];
        self.label.numberOfLines = 0;
        self.label.lineBreakMode = NSLineBreakByWordWrapping;
        self.label.backgroundColor = [UIColor whiteColor];
        [self.contentView addSubview:self.label];

        self.description = [[UILabel alloc] initWithFrame:CGRectMake(10.0, 380.0, 300, 400)];
        self.description.font= [UIFont fontWithName:@"Helvetica-Light" size:15];
        self.description.textColor = [UIColor blackColor];
        self.description.textAlignment = NSTextAlignmentJustified;
        self.description.numberOfLines = 0;
        self.description.lineBreakMode = NSLineBreakByWordWrapping;
        self.description.backgroundColor = [UIColor whiteColor];
        [self.description sizeToFit];
        [self.contentView addSubview:self.description];


        self.image = [[UIImageView alloc] initWithFrame:CGRectMake(20, 130, 280, 228)];
        self.image.clipsToBounds = YES;
        //[scrollView addSubview:self.image];
        [self.contentView addSubview:self.image];



        self.backgroundColor = [UIColor whiteColor];

我使用此方法从不同的控制器传递数据

- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath

    Cell *cell=[collectionView dequeueReusableCellWithReuseIdentifier:@"Cell" forIndexPath:indexPath];
    NSDictionary *item = [_articleListmain objectAtIndex:indexPath.item];
    // set the article image
    [cell.image setImageWithURL:[item objectForKey:@"image"]];
    [cell.label setText:[item objectForKey:@"title"]];
    [cell.description setText:[item objectForKey:@"description"]];



        return cell;

【问题讨论】:

【参考方案1】:

由于标签为空,sizeToFit 将其缩小为空。这才是重点。设置一些文本,然后调用sizeToFit,标签就足够容纳文本了。

【讨论】:

信息来自一个由 self.description 调用的数组 没关系。您需要在设置标签的text 属性后调用sizeToFit,而不是之前。在您发布的代码中,您没有在调用sizeToFit 之前设置text 属性。 设置标签文字后在标签上调用sizeToFit 我需要从其他 .h 文件中查看它...尊重 @RobertFarr 嗯?这与 .h 文件有什么关系?【参考方案2】:

我遇到了同样的问题。我有一个自定义单元格和一个单独的 tableview 控制器。事实证明,我们应该在控制器中设置 NumberOfLines 和 SizeToFit,而不是在单元格中。

【讨论】:

以上是关于为啥 sizeToFit 会删除我的整个标签?的主要内容,如果未能解决你的问题,请参考以下文章

在带有阴影的 UILabel 上使用 SizeToFit()?

为 SizeToFit 标签调整 UICollectionView 单元的大小

SizeToFit() 不能与 \n 一起正常工作?

为啥 P 标签不占用行的整个高度?

Swift:在 sizetofit 之后无法获得标题单元格标签的正确高度

为啥 Wordpress wp_update_post 函数会删除 html 表单标签?