ios - 在 UITableViewCell 中动态更改标签宽度

标签 ios iphone uitableview

我正在尝试构建自定义表格 View 。

enter image description here

正如您在图片中看到的,我在 Storyboard中将标签的宽度默认设置为 160 磅,并在加载表格时即时更改宽度。我通过修改“cellForRowAtIndexPath”委托(delegate)方法来实现这一点。

因此,根据日期的长度,我将 Label1 的宽度设置为最大限度地利用手机屏幕上的空间。

    CGFloat timeStampWidth = [cell.timestamp.text sizeWithFont:cell.timestamp.font].width;
    CGFloat ksCompanyNameLableMaxWidth = 235;
    NSLog(@"timeStampWidth:%f", timeStampWidth);
    CGSize companyNameLableSize = CGSizeMake((ksCompanyNameLableMaxWidth - timeStampWidth), cell.companyNameLabel.frame.size.height);
    CGRect newFrame = cell.companyNameLabel.frame;
    newFrame.size = companyNameLableSize;
    cell.companyNameLabel.frame = newFrame;

但是当我加载应用程序时,所有 label1 都设置为 Storyboard中设置的 160 点,尽管通过调试我已经看到我的代码针对每个单元格执行。

enter image description here

令我惊讶的是,如果我向下滚动并再次向上滚动。代码块再次被调用,标签设置如我所愿。

enter image description here

而且,如果我在标签之间切换,标签又会恢复到异常状态。

enter image description here

最佳答案

这听起来像是自动布局的结果——使用它时,根本不应该设置框架,而应该调整约束。您可以将 IBOutlet 设置为标签的宽度约束,并在代码中调整其常量值。

关于ios - 在 UITableViewCell 中动态更改标签宽度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19824559/

相关文章:

ios - 是否可以将 C 结构打包到 Cocoa 中的 NSKeyedArchiver 中?

ios - 如何在 Swift 的 TableView Controller 中使用图像选择器?

iphone - 将网站保存到 iPhone 上的主屏幕 - 强制名称

ios - 未调用 headerViewForSection

ios - 转换 JSON 嵌套对象

CollectionView 中的 iOS UIButton 仅在该单元格上触发自定义动画

iphone - 如何在 iPhone 中获取 UILabel 标签

iphone - 我要动画,其实淡入淡出, "within"drawRect

ios - 单元格在滚动时应用额外的阴影

ios - 当点击 UITableView 单元格时,我将如何显示 UIDatePicker?