[解決済み] カスタムセルを使用せずにUITableViewCellでテキストを折り返す方法
2022-04-30 05:07:42
質問
iPhone 0S 2.0での話です。2.1での回答も問題ありませんが、テーブルに関する違いはわかりません。
カスタムセルを作成しなくても、テキストを折り返すことは可能なように感じます。
UITableViewCell
には
UILabel
をデフォルトで使用します。カスタムセルを作成すればうまくいくことは分かっていますが、私が目指しているのはそういうことではなく、現在のやり方がなぜうまくいかないのかを理解したいのです。
ラベルはオンデマンドで作成されることがわかったので(セルはテキストと画像のアクセスをサポートしているので、必要なときまでデータビューを作成しない)、次のようにすると。
cell.text = @""; // create the label
UILabel* label = (UILabel*)[[cell.contentView subviews] objectAtIndex:0];
を設定すると、有効なラベルが得られますが
numberOfLines
とlineBreakModeを使ってもうまくいかず、一行テキストになってしまいます。には十分な高さがあります。
UILabel
の高さを大きな値で返しているだけです。
heightForRowAtIndexPath
.
解決方法は?
もっと簡単な方法を紹介します。
の中に
cellForRowAtIndexPath:
関数を使用します。最初にセルを作成するときに
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil)
{
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
cell.textLabel.lineBreakMode = UILineBreakModeWordWrap;
cell.textLabel.numberOfLines = 0;
cell.textLabel.font = [UIFont fontWithName:@"Helvetica" size:17.0];
}
ラベルの行数を0行にして、必要な行数だけ使えるようにしたことに気づくだろう。
次に
UITableViewCell
になるので、それを
heightForRowAtIndexPath
関数を使用します。
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
NSString *cellText = @"Go get some text for your cell.";
UIFont *cellFont = [UIFont fontWithName:@"Helvetica" size:17.0];
CGSize constraintSize = CGSizeMake(280.0f, MAXFLOAT);
CGSize labelSize = [cellText sizeWithFont:cellFont constrainedToSize:constraintSize lineBreakMode:UILineBreakModeWordWrap];
return labelSize.height + 20;
}
テキストの周りに少しバッファを持たせたいので、返されたセルの高さに20を追加しました。
関連
-
libc++abi.dylib が NSException 型の捕捉できない例外で終了する理由 エラー
-
[解決済み] Xcode 6.3 - 現在の iOS Development 証明書または保留中の証明書要求がすでにあります。
-
[解決済み] カスタムオブジェクトを含むNSMutableArrayをソートするにはどうすればよいですか?
-
[解決済み] Objective-Cで、ある文字列が他の文字列を含んでいるかどうかを調べるにはどうすればよいですか?
-
[解決済み] Xcode 12、iOS Simulator用にビルドしても、iOS用にビルドされたオブジェクトファイルでは、アーキテクチャ「arm64」用にリンクされます。
-
[解決済み] SwiftでURLから画像を読み込む/ダウンロードする
-
[解決済み] iPadマルチタスクのサポートには、これらの方向が必要です。
-
[解決済み] Swift で HTTP リクエストを行うにはどうしたらいいですか?
-
[解決済み] iOS 11、Apple TV 4Kなどを搭載したXcode 9でワイヤレスデバッグを行う方法とは?
-
[解決済み] SwiftでnibからカスタムUITableViewCellを作る
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
クラッシュエラー libc++abi.dylib: NSException 型のキャッチできない例外で終了_allanGold のブログ - ProgrammerITS401
-
[解決済み] iOSのバージョンを確認する方法を教えてください。
-
[解決済み] Xcodeにおけるバージョンとビルドの比較
-
[解決済み] Swiftを使用してアプリのバージョンとビルド番号を取得するにはどうすればよいですか?
-
[解決済み] UILabelで複数行のテキストを表示する
-
[解決済み] UIViewの角丸とドロップシャドウ?
-
[解決済み] 16進カラーバリューの使用方法
-
[解決済み] UITableView - トップにスクロールする
-
[解決済み] iOS 11、Apple TV 4Kなどを搭載したXcode 9でワイヤレスデバッグを行う方法とは?
-
[解決済み] Cocoapods警告 - CocoaPodsがプロジェクトの基本構成を設定しなかった理由は、プロジェクトに既にカスタム構成が設定されているためです。