テキストに改行を使用してUITableViewCell
いるため、スワイプして [削除] ボタンを表示すると、textLabel が台無しになります。
前:
削除モード:
邪魔にならないようにアニメーション化しようとするのではなく、テキストの上に削除ボタンを配置したいだけなので、これはイライラします。
- なぜこれが起こるのですか?文字列に改行を使用しているためですか?
- どうすればこれを防ぐことができますか?
テキストに改行を使用してUITableViewCell
いるため、スワイプして [削除] ボタンを表示すると、textLabel が台無しになります。
前:
削除モード:
邪魔にならないようにアニメーション化しようとするのではなく、テキストの上に削除ボタンを配置したいだけなので、これはイライラします。
なぜこれが起こるのですか?文字列に改行を使用しているためですか?
これは、セルの 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 を使用している場合は、自動サイズ変更マスクの矢印がグレー表示されていることを確認してください。
textLabel.Frame
UITableViewCell のプロパティにアクセスできるはずです。UITableViewCell をサブクラス化し、これを設定します[UITableViewCell didTransitionToState:(UITableViewCellStateMask)state]