2012-02-28 2 views
0

私のiPhoneアプリでは、私はカスタマイズされたセルでUITableViewを持っています。セル上のラベルのテキストはかなり長くなる可能性があり、ラップして拘束したいと思います。私はいくつかのことを試しましたが、ラベルはまだアクセサリのアイコンの下に広がっています。カスタマイズされた表のセルでUILableの奇妙さ

答えて

1

カスタムUITableViewCellをお持ちの場合は、- (void) layoutSubviewsメソッドを実装し、セル内のUILabelのサイズを変更できます。以下のような

何か:

CGRect titleFrame = _title.frame; 
NSString *currentText = [_title text]; 
CGSize size = [currentText sizeWithFont:_title.font constrainedToSize:CGSizeMake(titleFrame.size.width, 50.0f) lineBreakMode:_title.lineBreakMode]; 
titleFrame.size.height = size.height; 
_title.frame = titleFrame; 

_titleはUILabelです。

1

私は、UITableViewCellのカスタムサブクラスを作成するすべての手間を経る必要がないというelpriの答えを追加します。代わりにタグを使うことができますが、一般的なアプローチは正しいです。

  1. これは次のようになりcalculatedSize.widthcalculatedSize.height

使用してタグを使用して、あなたのUILabelフレームのsizeWithFont:constrainedToSize:lineBreakMode:

  • 設定幅/高さを使用して、最大サイズに制約するフレームのサイズを計算します。

    #define NAMELABEL_TAG 1 
    
    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
    { 
        static NSString *CellIdentifier = @"ACellIdentifier"; 
    
        UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
        UILabel *nameLabel = (UILabel *)[cell viewWithTag:NAMELABEL_TAG]; 
        // the rest of your code to resize the frame can go here... 
    } 
    

    また、インターフェイスビルダーでストラットとスプリングを正しく設定して、autoexpaデバイスが回転しているとき(あなたが望むものと仮定して)nds。

  • 関連する問題