2011-07-17 228 views
2

當內容大小動態變化時,我將如何設置scrollview的內容大小。我已將所有內容添加到名爲「contentView」的UIView,然後嘗試調用setcontentsize(如下所示),但這不會導致滾動。動態內容的滾動視圖setcontentsize

sudo'ish代碼:

[scrollView setContentSize: contentView.frame.size]; 

也許 「內容查看」 不是伸展它的大小以適合其子?

任何幫助,將不勝感激。

回答

4

UIViewUIScrollView將不會基於內容自動拉伸。您必須手動計算框架並將其相應地放置在滾動視圖中,然後將滾動視圖的contentSize設置爲可容納所有子視圖的最大可能大小。

1

當你添加東西到你的contentView調用[contentView sizeToFit],然後內容視圖將拉伸以適應其子視圖,然後,你發佈的代碼將工作。

1

這取決於您要動態添加的內容類型。假設您有大量的文本數據要顯示,然後使用UITextView,並且由於它是UIScrollView的子類,所以在分配文本內容時,可以獲取TextView的setContentSize。基於此,您可以設置UIScrollView的總大小。

float yPoint = 0.0f; 
UIScrollView *myScrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0.0f, yPoint, 320.0f, 400.0f)]; 

UITextView *calculatorTextView = [[UITextView alloc] init]; 
    calculatorTextView.text = @"My looong content text ..... this has a dynamic content"; 
[calculatorTextView sizeToFit]; 

yPoint = yPoint + calculatorTextView.contentSize.height; // Bingo, we have the new yPoiny now to start the next component. 

//現在你知道你的文字和地點將結束的高度。所以你可以創建一個標籤或其他TextView並在那裏顯示你的文本。您可以將這些組件作爲子視圖添加到滾動視圖中。

UITextView *myDisplayContent = [[UITextView alloc] initWithFrame:CGRectMake(0.0f, yPoint, 300.f, calculatorTextView.contentSize.height)]; 

myDisplayContent.text = @"My lengthy text ...."; 
[myScrollView addSubview:myDisplayContent]; 

//最後,設定「myScrollView」的內容的大小的顯示區域的總長度。

[myScrollView setContentSize:yPoint + heightOfLastComponent]; 

這適用於我。