在文本中使用换行符时,UITableViewCell删除按钮会弹出textLabel

时间:2012-08-15 18:42:20

标签: objective-c ios cocoa-touch uitableview

我有一个UITableViewCell,当滑动以显示“删除”按钮时,它会将textLabel搞砸,因为我在文本中使用换行符。

在:

enter image description here

在删除模式下:

enter image description here

这很令人沮丧,因为我只想让删除按钮覆盖我的文本,而不是试图将其设置为将其搞砸的方式。

  • 为什么会这样?因为我在字符串中使用换行符?
  • 如何防止这种情况发生?

2 个答案:

答案 0 :(得分:1)

  

为什么会这样?因为我在字符串中使用换行符?

之所以发生,是因为您已将标签添加到单元格的contentView(这很好)。当删除按钮出现时,contentView将自动调整大小,UITableViewCell的textLabel也会调整大小,因为它的autoresizingMask设置为UIViewAutoresizingFlexibleWidth。不幸的是,我们无法覆盖默认textLabel的autoresizingMask。

  

如何防止这种情况发生?

您必须自己构建自定义单元格。使用自定义UILabel作为属性的UITableViewCell子类,并将其autoresizingMask设置为UIViewAutoresizingNone

//create and set your frame to whatever you want.
UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(20, 20, 110, 20)];

//set autoresizing
[label setAutoresizingMask:UIViewAutoresizingNone];

//add to view
[[self contentView] addSubview:label];

//set property to acces later
[self myLabel:label];

//release (if you aren't using ARC)
[myLabel release];

添加一些示例文本以便稍后在

上进行测试
[[cell myLabel] setText:@"MAX: 72.92 MPH Will fit!"];

如果您正在使用界面生成器创建视图/单元格,请确保自动调整蒙版箭头灰显

interfacebuilder autoresizingMask

答案 1 :(得分:0)

您应该能够访问UITableViewCell的textLabel.Frame属性。子类UITableViewCell并在[UITableViewCell didTransitionToState:(UITableViewCellStateMask)state]

中设置它