ios - 如何获取 UITableViewCell 内标签的高度?

标签 ios objective-c uitableview

假设我有一个简单的 tableViewCell,只有一个 View (UILabel),并且 tableView 有 10 行和 label< 的文本 不同位置的行数从 1 到 3 行不等,现在位于 cellForRowAtIndexPath

cellForRowAtIndexPath{
  [MyCell* cell = _tableView.dequeueReusableCellWithIdentifier:@"MyCell"];
  cell.label.text = [stringArray objectAtIndex:indexPath.row];
}

现在我想将 cornerRadius 添加到该 label 中,它与该标签的高度成正比(假设角半径是标签高度的一半)

label.layer.cornerRadius = label.frame.size.height/2;

现在我的问题是我在哪里设置标签的角半径?

  1. 我尝试在 cellForRowAtIndexPath 中设置,但我得到了错误的高度值
  2. 我尝试像这样重写 MyCell 类中的 layoutForSubViews

    -(void)layoutSubviews{
      [super layoutSubviews];
       self.label.layer.cornerRadius = self.label.frame.size.height/2;
    }
    

    但我仍然得到错误的高度值

  3. 我尝试在 tableView 的 -willDisplayCell 回调中执行此操作,但高度仍然错误

似乎唯一有效的方法是覆盖单元格的drawRect并分配cornerRadius。这是唯一的方法吗?

最佳答案

您也可以尝试使用 [cell.label sizeToFit]; 并在此之后访问框架,例如在 cellForRowAtIndex 路径中。

但是大小合适会导致布局错误。

此外,@DSDharma 注释应该很有用,但您需要在 UITableViewCell 子类中重写 - (void) layoutSubviews。那应该有效。

关于ios - 如何获取 UITableViewCell 内标签的高度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44713818/

相关文章:

ios - 如何存储单元格的选择,需要最佳实践

objective-c - ALAssetsGroupLibrary 不包含视频项

ios - 如何像iOS Music App TableView一样将UITableView分为三部分?

ios - 为测试定义常量值,为调试定义另一个常量值

ios - 如何在实例方法中访问类方法变量或对两者使用公共(public)变量?

ios - 如何调用委托(delegate)方法

objective-c - 如何将图标添加到 NSMenuItem 的右侧

iOS-13 - UITableViewCell 的 CornerRadius

ios - 更新 FacobookLogin Pod,出现错误 : No known class method for selector 'objectForJSONString:error:'

iphone - iOS 如何取消预定的本地通知