2012-01-17 18 views
1

我需要的是這樣的如何在一個UIScrollView非滾動內容

+ scrollview 
| 
|__ moving content 
| 
|__ non moving content 

棘手的部分是我在修改現有的代碼,我不能使用 父滾動視圖設置「不移動的內容」,因爲它是孩子。非移動內容 必須是滾動視圖子項。我正在考慮將它附加到背景視圖,但我不知道如何訪問UIScrollview的背景視圖。

回答

3

我相信這樣做的「推薦」方法是覆蓋自定義UIScrollView子類中的layoutSubviews。如果您是開發人員計劃成員,那麼在2010年WWDC會議中,您應該能夠獲得這一點(IIRC)。

假設您不能繼承UIScrollView的子類(根據您對修改現有代碼的限制),您可以執行以下操作。

讓「staticView」是「非移動內容」您想保留固定:

UIView *staticView; 

創建伊娃(可能是在您的視圖控制器),以保持其初始中心:

CGPoint staticViewDefaultCenter = [staticView center]; // Say, in viewDidLoad 

如果您的視圖控制器不是已經存在的滾動視圖的代表,請執行如下操作:

- (void)scrollViewDidScroll:(UIScrollView *)scrollView { 
    CGPoint contentOffset = [scrollView contentOffset]; 
    CGPoint newCenter = CGPointMake(staticViewDefaultCenter.x + contentOffset.x, 
            staticViewDefaultCenter.y + contentOffset.y); 
    [staticView setCenter:newCenter]; 
} 

這將涵蓋可滾動視圖的簡單情況。處理可縮放視圖會有點棘手,並且部分取決於你如何實現了viewForZoomingInScrollView:方法,但是遵循類似的過程(當然在scrollViewDidZoom中這一次:當然)。

我還沒有想過通過在你的靜態視圖上進行轉換的含義 - 在這種情況下你可能還得做一些操作。

相關問題