2011-12-05 15 views
2

テキストが常に変化するように、XMLフィードからUITextViewをロードしています。私は次のセルとテキストのサイズを変更しようとしていますが、セルのサイズは変更されますが、テキストビューは表示されません。UITextView動的にテキストボックス/セルのサイズを変更する

正しい方法に沿ったヒントは本当に感謝しています。

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

    AssessObject *newObj1; 
    newObj1=[totalArray objectAtIndex:indexPath.row]; 

    NSString *cellText = newObj1.routeText; 

    UIFont *cellFont = [UIFont fontWithName:@"Helvetica" size:16.0]; 
    CGSize constraintSize = CGSizeMake(188.0, CGFLOAT_MAX); 
    CGSize textViewSize = [cellText sizeWithFont:cellFont constrainedToSize:constraintSize lineBreakMode:UILineBreakModeWordWrap]; 


    return textViewSize.height + 200; 


} 

答えて

3

セルに追加したUITextViewの自動サイズ変更マスクを確認してください。

+0

これは、セルの再描画/元の描画で実際には変わっていますが、現在は適切な縮尺に設定されています。最初にそれが半分であることを示すと、下にスクロールして元のテキストがそこにあります – TMB87

+0

http://screencast.com/t/cxXaac0bPw theres私が意味することを説明するビデオ – TMB87

+0

私はscaleToFitモードについて話していませんでしたしかし[autoresizingMask](http://www.techotopia.com/images/2/27/Iphone_view_autosize_height_width.jpg)。スーパービューに従ってサイズが変更されるように、ここですべての設定が正しく行われていることを確認してください。ところで、あなたのスクリーンキャストを見た後は、UITableViewCellsの再利用メカニズムが典型的に誤用されている可能性もあります。 – AliSoftware

0

設定、フォントサイズ、テキストコンテンツとUITextViewのフレームRECT(あなたがUIViewAutoresizingMaskFlexibleWidth|UIViewAutoresizingMaskFlexibleWidth値を使用してIB中、またはコードのいずれかを介してこれを行うことができます)、それが細胞にリサイズするように、それが設定されていることを確認します、次に[UITextView sizeToFit]を入力してUITextViewのcontentSizeを計算し、次にcontentSizeのサイズで行の高さを計算します。

UITextViewのフレーム矩形のサイズを変更することを忘れないでください。

1

textViewのサイズをtextViewのcontentSizeに設定します。このような 何か:

CGRectMake(textView.frame.origin.x, textView.frame.origin.y, textView.frame.size.width, textView.contentSize.height); 

私はそれの高さcontentViewだに等しいのTextViewの高さを作ってるんです。

0

私は、テキストの量に応じてTextViewのサイズを変更するために、私がScrollViewに配置するときに、Brunoの考えを使用しました。これが私のやり方です。そこには定数がたくさんあり、あなたが使うことはできません。 textViewをScrollViewに追加した後でサイズを変更することが重要です。

// Programmatic creation of scroll view layout 
NSString *text = @"Your text"; 
CGFloat textOffSetInColumn = 10; 
CGFloat infoTextWidth = 196; 
CGFloat infoOffsetVertical = 36; 
CGFloat initialTextHeight = 50; 

// Create textView with initial height 
CGRect infoTextFrame = CGRectMake(textOffSetInColumn, infoOffsetVertical, infoTextWidth, initialTextHeight); 
infoTextView = [[UITextView alloc] initWithFrame:infoTextFrame]; 
infoTextView.text = text; 
[scrollView addSubview:infoTextView]; 

// Resize textView 
CGFloat infoTextHeight = infoTextView.contentSize.height; 
infoTextFrame = CGRectMake(textOffSetInColumn, infoOffsetVertical, infoTextWidth, infoTextHeight); 
infoTextView.frame = infoTextFrame; 

あなたがのTextViewのサイズを変更し、前の中央にセンタリングしたい場合は、このコードを使用することができます。代わりにcategoryTextViewの

// Changing size of TextView and centering 
    CGPoint center = self.categoryTextView.center; 
    self.categoryTextView.frame = CGRectMake(_categoryTextView.frame.origin.x, _categoryTextView.frame.origin.y, _categoryTextView.frame.size.width, _categoryTextView.contentSize.height); 
    self.categoryTextView.center = center; 

は、独自のアウトレット名を使用します。

関連する問題