我正在尝试构建自定义表格 View 。
正如您在图片中看到的,我在 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 点,尽管通过调试我已经看到我的代码针对每个单元格执行。
令我惊讶的是,如果我向下滚动并再次向上滚动。代码块再次被调用,标签设置如我所愿。
而且,如果我在标签之间切换,标签又会恢复到异常状态。
最佳答案
这听起来像是自动布局的结果——使用它时,根本不应该设置框架,而应该调整约束。您可以将 IBOutlet 设置为标签的宽度约束,并在代码中调整其常量值。
关于ios - 在 UITableViewCell 中动态更改标签宽度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19824559/