2013-03-15 108 views
1

我是iOS開發人員的初學者,並且無法自動調整UITextView的大小。自動調整UITextView的大小

我創建了一個主 - 細節應用程序。在我的DetailViewController.xib上,我添加了一個ScrollView,它包含標題,圖像的Label以及此圖像下的TextView,以便將用戶發佈的描述放入。
問題是,描述取決於我的WebService返回的內容,所以我需要它自動調整大小。

這裏是我的代碼:

- (void)configureView 
{ 
    ... 
    self.detailDescriptionTextView.text = [self.detailItem valueForKey:@"adDescription"]; 

    CGRect frame = self.detailDescriptionTextView.frame; 
    frame.size.height = self.detailDescriptionTextView.contentSize.height; 
    self.detailDescriptionTextView.frame = frame; 
) 

的問題是,TextView的正確獲取內容,但它不調整所有..我看了一會兒答案,回答最多的是什麼我嘗試...

感謝您的幫助。

編輯:我意識到了一些東西。爲了在描述下放置一些元素,我在Interface Builder中爲描述放置了一個非常小的TextView,這是一個問題嗎?如果是這樣,我怎麼能把這個TextView下的其他元素,因爲在接口生成器沒有更多的空間不會?

編輯2:我終於成功了。看來問題是我通過Interface Builder創建了TextView。通過編程創建它,它完美地工作。這裏是我的代碼,如果它可以幫助某人:

UITextView *textView = [[UITextView alloc] initWithFrame:CGRectMake(20, 195, 280, 10)]; 
textView.text = [self.detailItem valueForKey:@"adDescription"]; 
textView.font = [UIFont fontWithName:@"Hevlatica" size:14]; 
[self.scrollView addSubview:textView]; 
CGRect descriptionFrame = textView.frame; 
descriptionFrame.size.height = textView.contentSize.height; 
textView.frame = descriptionFrame; 

感謝您的幫助。

回答

3

首先計算使用

NSString *content = @"Hello how are you."; 
CGSize size = [content sizeWithFont:[UIFont systemFontOfSize:14] 
       constrainedToSize:CGSizeMake(yourWidth, MAX_HEIGHT) 
        lineBreakMode:UILineBreakModeWordWrap]; 

內容的高度,然後設置的TextView

[self.textView setFrame:CGRectMake(5, 30, 100, size.height + 10)]; 

或者

的框架內容添加到您的TextView,然後嘗試這個

CGRect frame = self.textView.frame; 
frame.size.height = self.textView.contentSize.height; 
self.textView.frame = frame; 

希望這有助於!

+0

嗨, 感謝您回答如此之快,但不幸的是它不起作用:-( 在第一個解決方案中,我嘗試用NSString * content = [self.detailDescriptionTextView.text]替換NSString *內容;並且嘗試使用200(for yourWidth)和999(對於MAX_HEIGHT)它不會改變任何東西 第二種解決方案與我的理解完全相同,如果我理解您的意思:S – 2013-03-15 13:08:04

+0

是self.detailDescriptionTextView.contentSize.height &self.detailDescriptionTextView.frame.size.height是否一樣? – 2013-03-15 13:09:13

+0

我試過了: NSLog(@「contentSize:%f」,self.detailDescriptionTextView.contentSize.height); NSLog(@「frame:%f」,self .detailDescriptionTextView.frame.size.height); 第一個日誌返回178.000000,第二個178.000000也是 – 2013-03-15 13:13:33

1
CGSize constraint = CGSizeMake(690.0, 2000.0); 
int h=10; 
CGSize size_txt_overview1 = [[self.detailItem valueForKey:@"adDescription"] sizeWithFont:[UIFont fontWithName:@"Helvetica" size:18] constrainedToSize:constraint lineBreakMode:UILineBreakModeWordWrap]; 
frame.size.height = size_txt_overview1.height; 
self.detailDescriptionTextView.frame = frame;