我有一个UITableViewCell
,当滑动以显示“删除”按钮时,它会将textLabel搞砸,因为我在文本中使用换行符。
在:
在删除模式下:
这很令人沮丧,因为我只想让删除按钮覆盖我的文本,而不是试图将其设置为将其搞砸的方式。
答案 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!"];
如果您正在使用界面生成器创建视图/单元格,请确保自动调整蒙版箭头灰显。
答案 1 :(得分:0)
您应该能够访问UITableViewCell的textLabel.Frame
属性。子类UITableViewCell并在[UITableViewCell didTransitionToState:(UITableViewCellStateMask)state]