2011-04-21 82 views
4

我有一個自定義繪製的視圖,包含在水平滾動的UIScrollView中。該視圖使用水平延伸的線條和一些不同的背景顏色繪製背景。當我滾動到最左邊,使滾動視圖「反彈」時,我看到灰色的背景色。我想要做的是在該區域繪製更多的背景線條和顏色,以便看起來像視圖一直持續下去,但我無法弄清楚如何做到這一點。我已經嘗試將所有視圖的clipsToBounds設置爲NO,並在視圖外的區域中繪製,但這似乎不起作用。我如何在這方面畫畫?如何繪製UIScrollView的「反彈」區域?

+0

您是否嘗試過創建自己的滾動視圖(子類的UIScrollView)和實施的drawRect:?將這與原始繪圖實現結合起來可能會非常棘手,但這是我首先嚐試的方式。 – Till 2011-04-21 16:03:37

回答

1

我發現在我的情況下,要解決這個,至少。我只是用一個額外的邊距增加了滾動視圖的大小,然後將滾動視圖部分地定位在屏幕之外。

CGFloat scrollViewHeight = 300; 
    CGFloat preferredWidthOfContent = 500; 
    CGFloat gutterMargin = self.bounds.size.width/2; 
    scrollView.frame = CGRectMake(-1 * gutterMargin, 0, self.bounds.size.width, scrollViewHeight) 
    scrollView.contentSize = CGSizeMake(preferredWidthOfContent + 2 * gutterMargin, scrollViewHeight); 
    contentView.frame = CGRectMake(0, 0, preferredWidthOfContent + 2 * gutterMargin, scrollViewHeight); 

內容視圖必須知道排水溝邊距寬度,然後根據該內容在正確的位置繪製實際內容。當scrollView被「反彈」時,實際顯示內容視圖的其餘部分。

這招有效,因爲滾動視圖是延長關閉屏幕。如果您想使用與未觸摸屏幕邊緣的滾動視圖相同的技巧,則只需在滾動視圖頂部放置另一個視圖即可隱藏額外空間。

0

如果您正在繪製的線條drawRect:方法,沒有辦法吸引他們的觀點界限之外。該物業clipsToBounds隻影響子視圖,因此,從理論上講,你可以一個子視圖添加到您的主視圖與延伸到你的觀點的權利,提請在子視圖線的框架(顯示內容的)。

另一種選擇是將子視圖添加到滾動視圖並將其放置在主視圖的右側。然後在這個子視圖中畫線。滾動視圖仍然會彈跳,因爲它不關心其中是否還有部分可見的視圖,它只查看contentSize屬性以決定何時停止滾動。

如果兩個選項是合適的,描述越多,你會喜歡什麼樣的你畫什麼樣的外觀線條,以實現細節。