1

カスタムUITableViewCellにカスタムUIButtonがあります。ボタンのtitleLabelの可変テキストコンテンツに基づいて、カスタムテーブルセルのUIButtonの高さを設定したいと思います。

次の方法で身長を計算してみました

[NSString sizeWithFont:constrainedToSize:lineBreakMode:];

しかし、titleLabelに従ってボタンの高さを正常に変更できませんでした。

さらに、このボタンはカスタムUITableViewCellの一部であるため、カスタムUIButtonの高さに従ってセルの高さも変更する必要があります。

UITableViewのデリゲートメソッドとデータソースメソッドを実装するViewControllerで、次のメソッドで高さを決定しようとしました

- (CGFloat) tableView: (UITableView *) tableView 
heightForRowAtIndexPath:(NSIndexPath *)indexPath

しかし、成功しませんでした。

これを解決するための最良の解決策またはアプローチは何でしょうか?

4

3 に答える 3

4

ボタンの幅が145.0fであると仮定します。

CGSize constraintSize;

constraintSize.width = 145.0f;

constraintSize.height = MAXFLOAT;

CGSize size = [Label.text sizeWithFont:Label.font constrainedToSize:constraintSize lineBreakMode:UILineBreakModeWordWrap]; 

次に、フレームを設定できます。

frame = CGRectMake(0, 0, 145, size.height);
于 2012-09-21T18:56:46.207 に答える
2

あなたはそれを正しくやっているようですが、覚えておいてください:

heightForRowAtIndexPath戻るCGFloat sizeWithFont必要があり、テキストの高さがわかります。ボタンのパディングを追加する必要があります。セル

constrainedToSize:CGSizeMake(###,MAXFLOAT)###がテキスト幅である場合に使用します

lineBreakMode:UILineBreakModeWordWrapもちろん

于 2012-09-21T18:40:49.940 に答える
1

を使用することもできます[buttonInstance sizeToFit]

 UIButton *lineButton = [[UIButton alloc] initWithFrame:CGRectZero];
 // If padding equals "yes, please"
 [lineButton setContentEdgeInsets:UIEdgeInsetsMake(0.0f, 5.0f, 0.0f, 3.0f)];
 [lineButton setTitle:@"Title" forState:UIControlStateNormal];
 [lineButton sizeToFit];
于 2012-12-20T16:23:11.447 に答える