0

コンテンツの高さに合わせてサイズを変更するUITextViewのコードを次に示します。

textView.frame高さを次のように明示的に書くと、次のようになります。

    textView.frame = CGRectMake(100, 12, 320, 458);

textViewのサイズは、期待どおりのコンテンツになります。

ただし、次のように書くと。NSLogステートメントは次の値があると言っていますが表示されませんtextView.contentSize.height

UITextView *textView = [[UITextView alloc] init];
textView.layer.borderWidth = 5.0f;

textView.layer.borderColor = [[UIColor redColor] CGColor];

textView.text = [item objectForKey:@"description"];

textView.frame = CGRectMake(100, 12, 320, textView.contentSize.height);


NSLog(@"%f textviewcontnet size", textView.contentSize.height);

textView.editable = NO;

[self.view addSubview:textView];

次の出力をログに記録すると:

NSLog(@"%f textviewcontent size", textView.contentSize.height);

「458.000000textviewcontentsize」が表示されます

助けてくれてありがとう

4

2 に答える 2

1

試してみることをお勧めします:

UITextView *textView = [[UITextView alloc] init];
textView.layer.borderWidth = 5.0f;
textView.layer.borderColor = [[UIColor redColor] CGColor];
textView.text = [item objectForKey:@"description"];
textView.frame = CGRectMake(100, 12, 320, 458);    
textView.editable = NO;

[self.view addSubview:textView];

textView.frame = CGRectMake(100, 12, 320, textView.contentSize.height);    

textView.contentSize.heightビューに追加されるまで機能しないと聞きました(これは私の経験ではありませんが)。textView.contentSize.heightさらに重要なのは、コントロールの幅がわからない場合にどのように解釈されるかわからないことです。したがって、先に進み、初期値を設定しframe、実行してaddSubviewから、に基づいてサイズを再調整しますtextView.contentSize.height

于 2013-02-23T22:24:06.617 に答える
0

私のプロジェクトの1つからすばやくコピーしました:

AppDelegate *appDelegate;

CGSize  textSize1, textSize2;

appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];

textSize1 = [self.subjectLabel.text sizeWithFont:[appDelegate fontNormal] constrainedToSize:CGSizeMake(300.0f, 10000.0f) lineBreakMode:NSLineBreakByWordWrapping];
self.subjectLabel.frame = CGRectMake(10, 5, 300, textSize1.height);
textSize2 = [self.descriptionLabel.text sizeWithFont:[appDelegate fontNormal] constrainedToSize:CGSizeMake(300.0f, 10000.0f) lineBreakMode:NSLineBreakByWordWrapping];
self.descriptionLabel.frame = CGRectMake(10, 5 + textSize1.height + 5, 300, textSize2.height);

[appDelegate fontNormal]すべての「通常の」テキストアイテムに使用しているUIFontオブジェクトを返すだけです。あまり気にしないでください。ただし、テキストビューにも使用されているのと同じフォントを使用することが重要です。

私の例はUILableなので、少し簡単です。これはテキストビューでも機能しますが、昆虫を考慮する必要があります。簡単な解決策です。テキストビューのフレーム幅と比較して、幅から「ファジーオフセット」を差し引くだけです。

于 2013-02-23T20:59:30.263 に答える