2009-12-03 59 views
0

我想做一些類似於移動Safari瀏覽器如何在加載頁面時將其URL欄錨定在屏幕頂部的方式,除非您滾動瀏覽頂部,在這種情況下,它會滾動顯示其餘內容。然而,我想要相反的事情發生;如果向下滾動,我想讓特定的子視圖滾動屏幕,但如果滾動到頂部,我希望子視圖停留在屏幕的頂部,而其餘內容則繼續向下滾動。我想我可以在視圖層次結構中做一些小技巧,當我們滾動到頂端時子視圖改變它們的超視圖,但是我想知道是否還有其他更優雅的解決方案。我如何在移動Safari瀏覽器中定位像UIScrollView的子視圖?

回答

1

對我自己的問題很晚回答,但我想我會透露我是如何做到這一點的。

我對UIScrollView進行了分類,並實現了layoutSubviews方法,每當滾動位置發生變化時都會調用該方法。在這裏,所有你需要做的是確定哪些查看您想錨,做這樣的事情:

- (void) layoutSubviews { 
    [super layoutSubviews]; 

    CGFloat x = 0.0f; 
    CGFloat y = MIN(self.contentOffset.y,0.0f); 

    anchorview.frame = CGRectMake(x,y,anchorview.frame.size.width,anchorview.frame.size.height); 
} 

如果你想錨定視圖留在頂部如果您滾動經過上(而不是留在與scrollview相同的位置),那麼這將做到這一點,因爲當您滾動超出視圖的頂部時,內容偏移的y座標將小於零。

0

UITableView節標題已經在普通表中執行此操作,您可以利用該行爲。

+0

這些表現方式與我想要的相反;我希望視圖能夠自動定位,當我滾動瀏覽頁面頂部時,以其他方式滾動顯示內容,而不是其他方式,因爲表格視圖頁眉在普通表格中工作;我也想讓它適用於任何一種風格的桌子視圖。 – Kevlar 2009-12-04 15:12:14

相關問題