假设我有一个简单的 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;
现在我的问题是我在哪里设置标签的角半径?
- 我尝试在
cellForRowAtIndexPath
中设置,但我得到了错误的高度值 我尝试像这样重写 MyCell 类中的
layoutForSubViews
。-(void)layoutSubviews{ [super layoutSubviews]; self.label.layer.cornerRadius = self.label.frame.size.height/2; }
但我仍然得到错误的高度值
我尝试在 tableView 的
-willDisplayCell
回调中执行此操作,但高度仍然错误
似乎唯一有效的方法是覆盖单元格的drawRect
并分配cornerRadius
。这是唯一的方法吗?
最佳答案
您也可以尝试使用 [cell.label sizeToFit];
并在此之后访问框架,例如在 cellForRowAtIndex 路径中。
但是大小合适会导致布局错误。
此外,@DSDharma 注释应该很有用,但您需要在 UITableViewCell 子类中重写 - (void) layoutSubviews
。那应该有效。
关于ios - 如何获取 UITableViewCell 内标签的高度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44713818/