UITableViewCell にある UITextView のサイズを変更しようとしています。それに応じて UITableViewCell のサイズも変更したいと思います。私の UITableViewCell は適切にサイズ変更されますが、UITextView は変更されません。正しいサイズにサイズ変更するのではなく、2 行だけになってしまいます。cellForRowAtIndexPath メソッドで初期化すると、次のようになります。
UITextView *notesTextView = [[UITextView alloc] initWithFrame:CGRectMake(83, 12, TEXTVIEW_WIDTH, 22)];
notesTextView.tag = TEXTVIEW_TAG;
notesTextView.delegate = self;
[cell.contentView addSubview:notesTextView];
textView デリゲート メソッドで変更しようとすると、次のようになります。
CGSize size = [textView.text sizeWithFont:textView.font constrainedToSize:CGSizeMake(TEXTVIEW_WIDTH, 460) lineBreakMode:UILineBreakModeWordWrap];
NSLog(@"size: %@", NSStringFromCGSize(size)); // has the correct size
if (size.height > self.notesRowHeight) {
self.notesRowHeight = size.height;
UITextView *aTextView = (UITextView *)[self.view viewWithTag:TEXTVIEW_TAG];
CGRect textViewFrame = CGRectMake(aTextView.frame.origin.x, aTextView.frame.origin.y, TEXTVIEW_WIDTH, size.height);
aTextView.frame = textViewFrame;
aTextView.contentSize = size;
[aTextView sizeToFit];
[aTextView sizeThatFits:size];
NSLog(@"%@", NSStringFromCGRect(aTextView.frame)); // has the correct height
したがって、最終的にはtableViewのサイズが適切に変更され、textViewフレームが正しいサイズ({{83、12}、{197、120}}など)であっても、textViewには2行しかありません。私が意図したように、UITableViewCellのサイズを取得することはありません。
編集: UITableViewCell ではない通常の UIView で UITextView のフレームのサイズを変更しようとすると、問題なく動作します。したがって、この場合の違いはわかりません。