0

テキストに改行を使用してUITableViewCellいるため、スワイプして [削除] ボタンを表示すると、textLabel が台無しになります。

前:

ここに画像の説明を入力

削除モード:

ここに画像の説明を入力

邪魔にならないようにアニメーション化しようとするのではなく、テキストの上に削除ボタンを配置したいだけなので、これはイライラします。

  • なぜこれが起こるのですか?文字列に改行を使用しているためですか?
  • どうすればこれを防ぐことができますか?
4

2 に答える 2

1

なぜこれが起こるのですか?文字列に改行を使用しているためですか?

これは、セルの contentView にラベルを追加したために発生します (これは良いことです)。削除ボタンが表示されると、 contentView が自動的にサイズ変更され、 autoresizingMask が に設定されているため、 UITableViewCell の textLabel もサイズ変更され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 を使用している場合は、自動サイズ変更マスクの矢印がグレー表示されていることを確認してください。

interfacebuilder autoresizingMask

于 2013-01-04T12:38:06.377 に答える
0

textLabel.FrameUITableViewCell のプロパティにアクセスできるはずです。UITableViewCell をサブクラス化し、これを設定します[UITableViewCell didTransitionToState:(UITableViewCellStateMask)state]

于 2012-08-15T18:49:13.097 に答える