2016-03-08 30 views
1

我有一個垂直UIScrollView與2個按鈕。我需要這樣做,所以當您滾動時,這些按鈕會觸碰iPhone屏幕的頂部,然後不再使用UIScrollView滾動,直到滾動視圖回落。垂直UIScrollView在子視圖上的最大y位置

這裏是頁面的樣子:

Example Image

我的投票和以下按鈕,當向上滾動,需要留下面的藍條,上面寫着「我」就可以了。什麼是實現這一目標的最佳方式?謝謝! (我正在使用Objective-C)

+0

爲什麼不把這個按鈕固定在ScrollView上方的界面生成器中? – schmidt9

+0

@ schmidt9因爲我需要它在滾動時隨滾動視圖一起移動。很難解釋爲什麼在這種情況下這是至關重要的。另外,我正在以編程方式完成大部分工作。 –

回答

0

好吧我終於明白了這一點。這是我的代碼:

-(void) scrollViewDidScroll:(UIScrollView *)scrollView { 
    CGPoint menuBarPointRelevantToScreen = [self.view convertPoint:self.menuBarView.frame.origin fromView:self.menuBarView]; 
    int yOfMenuBarWhenScrolling = menuBarPointRelevantToScreen.y-scrollView.contentOffset.y; 
    int bottomOfTopBarView = self.topBarView.frame.origin.y+self.topBarView.frame.size.height; 
    if(yOfMenuBarWhenScrolling < bottomOfTopBarView && self.menuBarView.superview == self.parentScrollView){ 
     [self.menuBarView removeFromSuperview]; 
     [POUIConstraintManager spaceTopOf:self.menuBarView fromBottomOf:self.topBarView space:0]; 
     [self.view addSubview:self.menuBarView]; 
    } 
    else if(scrollView.contentOffset.y<=constantMenuBarY && self.menuBarView.superview == self.view){ 
     [self.menuBarView removeFromSuperview]; 
     [self setupMenuBarPosition]; 
     [self.parentScrollView addSubview:self.menuBarView]; 
    } 
} 

這很難解釋,但希望上面的代碼可以幫助某人。基本上我做的如下: 首先,我需要弄清楚菜單項(「我的民意調查,以下」)距離頂部酒吧(「我」)有多遠。爲了做到這一點,我把菜單項的y座標與包含所有內容的視圖相關聯(與頂部欄(「我」)相同的視圖)。然後我只是從中減去滾動視圖的y偏移量,這給了我兩者之間的距離。 從那裏我只是使用if語句來確定菜單欄是否觸摸了頂部欄,以便我可以將其從捲動視圖中取出並將其添加到頂部欄的直接視圖中,直到它保留在頂部欄的下方滾動視圖已經回落。

(注:constantMenuBarY僅僅是一個常數整數,菜單欄被假設是在上滾動視圖時和POUIConstraintManager就是一個類我做了更容易定位的觀點)

我希望至少有道理。任何試圖弄清楚這一點的人都可能只是看看代碼而已。

更新: 我不得不通過一些必要的改變來使它在各種情況下工作。如果有人需要幫助,請發表評論,我可以更好地解釋它。

相關問題