2010-05-06 134 views
0

我有一個類型爲UIScrollView的詳細頁面。在它上面,我想要一個可選的UIImageView和一個強制性的UITextView。如果沒有圖像可用,則圖像視圖不應占用任何空間。文本視圖的文本可以具有不同的大小。帶滾動內容的UiScrollView

當視圖載入圖像和文本時,我需要能夠滾動瀏覽所有內容。所以圖像從屏幕的頂部滑落。

我只是不能得到這份工作,我覺得它應該很容易。有任何想法嗎?

回答

0

必須調用setContentSize與意見的大小。

CGRect frameOfImage; 
CGRect frameOfText; 
CGRect frameOfContent; 

frameOfImage.origin = CGPointZero; 
frameOfImage.size = myImage ? [myImage size] : CGSizeZero; 

[myImage setFrame:frameOfImage]; 

frameOfText.origin.x = 0; 
frameOfText.origin.y = frameOfImage.origin.y + frameOfImage.size.height; 
frameOfText.size = [myText.text sizeWithFont:myText.font forWidth:myScroll.bounds.width lineBreakMode:myText.lineBreakMode]; 

[myText setFrame:frameOfText]; 

frameOfContent = CGRectUnion(frameOfImage , frameOfText); 
frameOfContent.size.height += frameOfContent.origin.y; 
frameOfContent.size.width += frameOfContent.origin.x; 

[myScroll setContextSize:frameOfContent.size]; 

當你知道是否有圖像或不是你可以做一個自定義的UIScrollView的layoutSubviews或在您的控制器這一切在一次最後一位。

0

您應該創建自己的視圖,它在UIScrollView之後繼承。

在您的自定義YourScrollView你應該覆蓋

- (void) layoutSubviews; 

有計算文字的大小,圖像的尺寸(然後之間的和額外的間距),然後設置contentSize滾動視圖中使用:

[self setContentSize:CGSizeMake(CGRectGetWidth(self.bounds), yourCalculatedHeight)]; 

希望這有助於 保羅