Objective c UITableViewCell删除按钮在文本中使用换行符时会拧紧文本标签

Objective c UITableViewCell删除按钮在文本中使用换行符时会拧紧文本标签,objective-c,ios,cocoa-touch,uitableview,Objective C,Ios,Cocoa Touch,Uitableview,我有一个UITableViewCell,当滑动以显示删除按钮时,它会将文本标签拧紧,因为我在文本中使用了换行符 之前: 在删除模式下: 这是令人沮丧的,因为我只想删除按钮去我的文本,而不是试图动画它的方式,它搞砸了 为什么会发生这种情况?因为我在字符串中使用了换行符 我怎样才能防止这种情况发生 您应该能够访问UITableViewCell的textLabel.Frame属性。子类UITableViewCell并在[UITableViewCell DidTransitionOnState:(

我有一个
UITableViewCell
,当滑动以显示删除按钮时,它会将文本标签拧紧,因为我在文本中使用了换行符

之前:

在删除模式下:

这是令人沮丧的,因为我只想删除按钮去我的文本,而不是试图动画它的方式,它搞砸了

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

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

为什么会发生这种情况?因为我在字符串中使用了换行符

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

我怎样才能防止这种情况发生

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

//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创建视图/单元格,请确保自动调整大小的遮罩箭头灰显


好的,那么将帧设置为DIDTransitionState?他的意思是保存旧帧,当您转换到状态==UITableViewCellStateShowingEditControlMask时,尝试在那里设置帧。如果这不起作用,我有另一个想法,但这一个可能对你更容易(如果它起作用)不,这似乎不起作用。它只是让事情变得更加生疏。对不起,我帮不上忙——我会把它传给以前做过的人。